aboutsummaryrefslogtreecommitdiffstats
path: root/doc/api-documentation
diff options
context:
space:
mode:
authordanglassey <danglassey>2002-08-14 09:57:17 +0000
committerdanglassey <danglassey>2002-08-14 09:57:17 +0000
commitc9458897ebbb739d8db83c80e06512d8a612f743 (patch)
treef8c5381045887e34388cc6b26cfccc254bf766dc /doc/api-documentation
downloadsword-sf-cvs-c9458897ebbb739d8db83c80e06512d8a612f743.tar.gz
*** empty log message ***
Diffstat (limited to 'doc/api-documentation')
-rw-r--r--doc/api-documentation/html/_greek2_greek_8cpp-source.html915
-rw-r--r--doc/api-documentation/html/_greek2_greek_8h-source.html128
-rw-r--r--doc/api-documentation/html/_greek_chars_8h-source.html163
-rw-r--r--doc/api-documentation/html/annotated.html79
-rw-r--r--doc/api-documentation/html/cipherfil_8cpp-source.html52
-rw-r--r--doc/api-documentation/html/cipherfil_8h-source.html53
-rw-r--r--doc/api-documentation/html/class_encoding_filter_mgr-members.html32
-rw-r--r--doc/api-documentation/html/class_encoding_filter_mgr.html338
-rw-r--r--doc/api-documentation/html/class_encoding_filter_mgr__inherit__graph.pngbin0 -> 769 bytes
-rw-r--r--doc/api-documentation/html/class_g_b_f_footnotes-members.html31
-rw-r--r--doc/api-documentation/html/class_g_b_f_footnotes.html59
-rw-r--r--doc/api-documentation/html/class_g_b_f_h_t_m_l-members.html24
-rw-r--r--doc/api-documentation/html/class_g_b_f_h_t_m_l.html33
-rw-r--r--doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f-members.html47
-rw-r--r--doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f.html204
-rw-r--r--doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__coll__graph.pngbin0 -> 5974 bytes
-rw-r--r--doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__inherit__graph.pngbin0 -> 685 bytes
-rw-r--r--doc/api-documentation/html/class_g_b_f_headings-members.html31
-rw-r--r--doc/api-documentation/html/class_g_b_f_headings.html59
-rw-r--r--doc/api-documentation/html/class_g_b_f_morph-members.html31
-rw-r--r--doc/api-documentation/html/class_g_b_f_morph.html59
-rw-r--r--doc/api-documentation/html/class_g_b_f_o_s_i_s-members.html27
-rw-r--r--doc/api-documentation/html/class_g_b_f_o_s_i_s.html40
-rw-r--r--doc/api-documentation/html/class_g_b_f_plain-members.html24
-rw-r--r--doc/api-documentation/html/class_g_b_f_plain.html33
-rw-r--r--doc/api-documentation/html/class_g_b_f_r_t_f-members.html24
-rw-r--r--doc/api-documentation/html/class_g_b_f_r_t_f.html33
-rw-r--r--doc/api-documentation/html/class_g_b_f_strongs-members.html31
-rw-r--r--doc/api-documentation/html/class_g_b_f_strongs.html59
-rw-r--r--doc/api-documentation/html/class_g_b_f_th_m_l-members.html24
-rw-r--r--doc/api-documentation/html/class_g_b_f_th_m_l.html33
-rw-r--r--doc/api-documentation/html/class_greek_lex_attribs-members.html24
-rw-r--r--doc/api-documentation/html/class_greek_lex_attribs.html33
-rw-r--r--doc/api-documentation/html/class_latin1_u_t_f16-members.html24
-rw-r--r--doc/api-documentation/html/class_latin1_u_t_f16.html33
-rw-r--r--doc/api-documentation/html/class_latin1_u_t_f8-members.html24
-rw-r--r--doc/api-documentation/html/class_latin1_u_t_f8.html33
-rw-r--r--doc/api-documentation/html/class_list_key-members.html58
-rw-r--r--doc/api-documentation/html/class_list_key.html658
-rw-r--r--doc/api-documentation/html/class_list_key__coll__graph.pngbin0 -> 2670 bytes
-rw-r--r--doc/api-documentation/html/class_list_key__inherit__graph.pngbin0 -> 741 bytes
-rw-r--r--doc/api-documentation/html/class_locale_mgr-members.html27
-rw-r--r--doc/api-documentation/html/class_locale_mgr.html347
-rw-r--r--doc/api-documentation/html/class_locale_mgr__coll__graph.pngbin0 -> 720 bytes
-rw-r--r--doc/api-documentation/html/class_markup_filter_mgr-members.html41
-rw-r--r--doc/api-documentation/html/class_markup_filter_mgr.html330
-rw-r--r--doc/api-documentation/html/class_markup_filter_mgr__coll__graph.pngbin0 -> 773 bytes
-rw-r--r--doc/api-documentation/html/class_markup_filter_mgr__inherit__graph.pngbin0 -> 773 bytes
-rw-r--r--doc/api-documentation/html/class_p_l_a_i_n_footnotes-members.html31
-rw-r--r--doc/api-documentation/html/class_p_l_a_i_n_footnotes.html63
-rw-r--r--doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l-members.html24
-rw-r--r--doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l.html33
-rw-r--r--doc/api-documentation/html/class_r_t_f_h_t_m_l-members.html24
-rw-r--r--doc/api-documentation/html/class_r_t_f_h_t_m_l.html33
-rw-r--r--doc/api-documentation/html/class_r_w_p_h_t_m_l-members.html24
-rw-r--r--doc/api-documentation/html/class_r_w_p_h_t_m_l.html33
-rw-r--r--doc/api-documentation/html/class_r_w_p_r_t_f-members.html24
-rw-r--r--doc/api-documentation/html/class_r_w_p_r_t_f.html33
-rw-r--r--doc/api-documentation/html/class_s_c_s_u_u_t_f8-members.html27
-rw-r--r--doc/api-documentation/html/class_s_c_s_u_u_t_f8.html41
-rw-r--r--doc/api-documentation/html/class_s_w_basic_filter-members.html54
-rw-r--r--doc/api-documentation/html/class_s_w_basic_filter.html331
-rw-r--r--doc/api-documentation/html/class_s_w_basic_filter__coll__graph.pngbin0 -> 5381 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_basic_filter__inherit__graph.pngbin0 -> 1594 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_class-members.html18
-rw-r--r--doc/api-documentation/html/class_s_w_class.html36
-rw-r--r--doc/api-documentation/html/class_s_w_com-members.html115
-rw-r--r--doc/api-documentation/html/class_s_w_com.html186
-rw-r--r--doc/api-documentation/html/class_s_w_com__coll__graph.pngbin0 -> 4939 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_com__inherit__graph.pngbin0 -> 589 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_config-members.html24
-rw-r--r--doc/api-documentation/html/class_s_w_config.html216
-rw-r--r--doc/api-documentation/html/class_s_w_display-members.html20
-rw-r--r--doc/api-documentation/html/class_s_w_display.html97
-rw-r--r--doc/api-documentation/html/class_s_w_display__coll__graph.pngbin0 -> 1638 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_display__inherit__graph.pngbin0 -> 676 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_gen_book-members.html116
-rw-r--r--doc/api-documentation/html/class_s_w_gen_book.html175
-rw-r--r--doc/api-documentation/html/class_s_w_gen_book__coll__graph.pngbin0 -> 5022 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_gen_book__inherit__graph.pngbin0 -> 670 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_input_method-members.html22
-rw-r--r--doc/api-documentation/html/class_s_w_input_method.html93
-rw-r--r--doc/api-documentation/html/class_s_w_key-members.html43
-rw-r--r--doc/api-documentation/html/class_s_w_key.html732
-rw-r--r--doc/api-documentation/html/class_s_w_key__coll__graph.pngbin0 -> 1583 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_key__inherit__graph.pngbin0 -> 2085 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_l_d-members.html116
-rw-r--r--doc/api-documentation/html/class_s_w_l_d.html247
-rw-r--r--doc/api-documentation/html/class_s_w_l_d__coll__graph.pngbin0 -> 4897 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_l_d__inherit__graph.pngbin0 -> 555 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_locale-members.html30
-rw-r--r--doc/api-documentation/html/class_s_w_locale.html146
-rw-r--r--doc/api-documentation/html/class_s_w_locale__coll__graph.pngbin0 -> 881 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_mgr-members.html59
-rw-r--r--doc/api-documentation/html/class_s_w_mgr.html1296
-rw-r--r--doc/api-documentation/html/class_s_w_mgr__coll__graph.pngbin0 -> 1246 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_module-members.html113
-rw-r--r--doc/api-documentation/html/class_s_w_module.html3339
-rw-r--r--doc/api-documentation/html/class_s_w_module__coll__graph.pngbin0 -> 4494 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_module__inherit__graph.pngbin0 -> 1591 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_object-members.html17
-rw-r--r--doc/api-documentation/html/class_s_w_object.html90
-rw-r--r--doc/api-documentation/html/class_s_w_object__coll__graph.pngbin0 -> 761 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_object__inherit__graph.pngbin0 -> 2361 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_text-members.html115
-rw-r--r--doc/api-documentation/html/class_s_w_text.html141
-rw-r--r--doc/api-documentation/html/class_s_w_text__coll__graph.pngbin0 -> 4934 bytes
-rw-r--r--doc/api-documentation/html/class_s_w_text__inherit__graph.pngbin0 -> 580 bytes
-rw-r--r--doc/api-documentation/html/class_str_key-members.html44
-rw-r--r--doc/api-documentation/html/class_str_key.html99
-rw-r--r--doc/api-documentation/html/class_str_key__coll__graph.pngbin0 -> 2376 bytes
-rw-r--r--doc/api-documentation/html/class_str_key__inherit__graph.pngbin0 -> 752 bytes
-rw-r--r--doc/api-documentation/html/class_th_m_l_footnotes-members.html31
-rw-r--r--doc/api-documentation/html/class_th_m_l_footnotes.html59
-rw-r--r--doc/api-documentation/html/class_th_m_l_g_b_f-members.html24
-rw-r--r--doc/api-documentation/html/class_th_m_l_g_b_f.html33
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l-members.html47
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l.html189
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l__coll__graph.pngbin0 -> 5910 bytes
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l__inherit__graph.pngbin0 -> 620 bytes
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f-members.html47
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f.html247
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__coll__graph.pngbin0 -> 5963 bytes
-rw-r--r--doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__inherit__graph.pngbin0 -> 683 bytes
-rw-r--r--doc/api-documentation/html/class_th_m_l_headings-members.html31
-rw-r--r--doc/api-documentation/html/class_th_m_l_headings.html59
-rw-r--r--doc/api-documentation/html/class_th_m_l_lemma-members.html31
-rw-r--r--doc/api-documentation/html/class_th_m_l_lemma.html59
-rw-r--r--doc/api-documentation/html/class_th_m_l_morph-members.html31
-rw-r--r--doc/api-documentation/html/class_th_m_l_morph.html59
-rw-r--r--doc/api-documentation/html/class_th_m_l_o_l_b-members.html24
-rw-r--r--doc/api-documentation/html/class_th_m_l_o_l_b.html33
-rw-r--r--doc/api-documentation/html/class_th_m_l_o_s_i_s-members.html27
-rw-r--r--doc/api-documentation/html/class_th_m_l_o_s_i_s.html40
-rw-r--r--doc/api-documentation/html/class_th_m_l_plain-members.html24
-rw-r--r--doc/api-documentation/html/class_th_m_l_plain.html33
-rw-r--r--doc/api-documentation/html/class_th_m_l_r_t_f-members.html47
-rw-r--r--doc/api-documentation/html/class_th_m_l_r_t_f.html186
-rw-r--r--doc/api-documentation/html/class_th_m_l_r_t_f__coll__graph.pngbin0 -> 5903 bytes
-rw-r--r--doc/api-documentation/html/class_th_m_l_r_t_f__inherit__graph.pngbin0 -> 609 bytes
-rw-r--r--doc/api-documentation/html/class_th_m_l_scripref-members.html31
-rw-r--r--doc/api-documentation/html/class_th_m_l_scripref.html59
-rw-r--r--doc/api-documentation/html/class_th_m_l_strongs-members.html31
-rw-r--r--doc/api-documentation/html/class_th_m_l_strongs.html59
-rw-r--r--doc/api-documentation/html/class_th_m_l_variants-members.html32
-rw-r--r--doc/api-documentation/html/class_th_m_l_variants.html61
-rw-r--r--doc/api-documentation/html/class_tree_key-members.html61
-rw-r--r--doc/api-documentation/html/class_tree_key.html326
-rw-r--r--doc/api-documentation/html/class_tree_key__coll__graph.pngbin0 -> 2363 bytes
-rw-r--r--doc/api-documentation/html/class_tree_key__inherit__graph.pngbin0 -> 969 bytes
-rw-r--r--doc/api-documentation/html/class_tree_key_idx-members.html77
-rw-r--r--doc/api-documentation/html/class_tree_key_idx.html419
-rw-r--r--doc/api-documentation/html/class_tree_key_idx__coll__graph.pngbin0 -> 3380 bytes
-rw-r--r--doc/api-documentation/html/class_tree_key_idx__inherit__graph.pngbin0 -> 980 bytes
-rw-r--r--doc/api-documentation/html/class_u_t_f16_u_t_f8-members.html24
-rw-r--r--doc/api-documentation/html/class_u_t_f16_u_t_f8.html33
-rw-r--r--doc/api-documentation/html/class_u_t_f8_cantillation-members.html31
-rw-r--r--doc/api-documentation/html/class_u_t_f8_cantillation.html59
-rw-r--r--doc/api-documentation/html/class_u_t_f8_greek_accents-members.html31
-rw-r--r--doc/api-documentation/html/class_u_t_f8_greek_accents.html59
-rw-r--r--doc/api-documentation/html/class_u_t_f8_h_t_m_l-members.html24
-rw-r--r--doc/api-documentation/html/class_u_t_f8_h_t_m_l.html33
-rw-r--r--doc/api-documentation/html/class_u_t_f8_hebrew_points-members.html31
-rw-r--r--doc/api-documentation/html/class_u_t_f8_hebrew_points.html59
-rw-r--r--doc/api-documentation/html/class_u_t_f8_latin1-members.html25
-rw-r--r--doc/api-documentation/html/class_u_t_f8_latin1.html36
-rw-r--r--doc/api-documentation/html/class_u_t_f8_u_t_f16-members.html24
-rw-r--r--doc/api-documentation/html/class_u_t_f8_u_t_f16.html33
-rw-r--r--doc/api-documentation/html/class_unicode_r_t_f-members.html24
-rw-r--r--doc/api-documentation/html/class_unicode_r_t_f.html33
-rw-r--r--doc/api-documentation/html/class_verse_key-members.html109
-rw-r--r--doc/api-documentation/html/class_verse_key.html1909
-rw-r--r--doc/api-documentation/html/class_verse_key__coll__graph.pngbin0 -> 4252 bytes
-rw-r--r--doc/api-documentation/html/class_verse_key__inherit__graph.pngbin0 -> 773 bytes
-rw-r--r--doc/api-documentation/html/classes.html31
-rw-r--r--doc/api-documentation/html/comments_2rawcom_2rtfidx_8cpp-source.html306
-rw-r--r--doc/api-documentation/html/comments_2zcom_2rawtxt2z_8cpp-source.html97
-rw-r--r--doc/api-documentation/html/compress_8cpp-source.html781
-rw-r--r--doc/api-documentation/html/deflate_8h-source.html332
-rw-r--r--doc/api-documentation/html/defs_8h-source.html88
-rw-r--r--doc/api-documentation/html/dirent_8cpp-source.html145
-rw-r--r--doc/api-documentation/html/dirent_8h-source.html46
-rw-r--r--doc/api-documentation/html/doxygen.css49
-rw-r--r--doc/api-documentation/html/doxygen.pngbin0 -> 2352 bytes
-rw-r--r--doc/api-documentation/html/echomod_8cpp-source.html35
-rw-r--r--doc/api-documentation/html/echomod_8h-source.html52
-rw-r--r--doc/api-documentation/html/encfiltmgr_8cpp-source.html162
-rw-r--r--doc/api-documentation/html/encfiltmgr_8h-source.html69
-rw-r--r--doc/api-documentation/html/entriesblk_8cpp-source.html180
-rw-r--r--doc/api-documentation/html/entriesblk_8h-source.html44
-rw-r--r--doc/api-documentation/html/femain_8cpp-source.html26
-rw-r--r--doc/api-documentation/html/femain_8h-source.html46
-rw-r--r--doc/api-documentation/html/filemgr_8cpp-source.html278
-rw-r--r--doc/api-documentation/html/filemgr_8h-source.html96
-rw-r--r--doc/api-documentation/html/files.html268
-rw-r--r--doc/api-documentation/html/flatapi_8h-source.html92
-rw-r--r--doc/api-documentation/html/functions.html241
-rw-r--r--doc/api-documentation/html/gbf_8cpp-source.html749
-rw-r--r--doc/api-documentation/html/gbf_8h-source.html81
-rw-r--r--doc/api-documentation/html/gbffootnotes_8cpp-source.html132
-rw-r--r--doc/api-documentation/html/gbffootnotes_8h-source.html70
-rw-r--r--doc/api-documentation/html/gbfheadings_8cpp-source.html121
-rw-r--r--doc/api-documentation/html/gbfheadings_8h-source.html70
-rw-r--r--doc/api-documentation/html/gbfhtml_8cpp-source.html550
-rw-r--r--doc/api-documentation/html/gbfhtml_8h-source.html50
-rw-r--r--doc/api-documentation/html/gbfhtmlhref_8cpp-source.html162
-rw-r--r--doc/api-documentation/html/gbfhtmlhref_8h-source.html45
-rw-r--r--doc/api-documentation/html/gbfmorph_8cpp-source.html112
-rw-r--r--doc/api-documentation/html/gbfmorph_8h-source.html69
-rw-r--r--doc/api-documentation/html/gbfosis_8cpp-source.html325
-rw-r--r--doc/api-documentation/html/gbfosis_8h-source.html47
-rw-r--r--doc/api-documentation/html/gbfplain_8cpp-source.html120
-rw-r--r--doc/api-documentation/html/gbfplain_8h-source.html49
-rw-r--r--doc/api-documentation/html/gbfrtf_8cpp-source.html304
-rw-r--r--doc/api-documentation/html/gbfrtf_8h-source.html49
-rw-r--r--doc/api-documentation/html/gbfstrongs_8cpp-source.html144
-rw-r--r--doc/api-documentation/html/gbfstrongs_8h-source.html70
-rw-r--r--doc/api-documentation/html/gbfthml_8cpp-source.html477
-rw-r--r--doc/api-documentation/html/gbfthml_8h-source.html46
-rw-r--r--doc/api-documentation/html/graph_legend.dot20
-rw-r--r--doc/api-documentation/html/graph_legend.html60
-rw-r--r--doc/api-documentation/html/graph_legend.pngbin0 -> 3678 bytes
-rw-r--r--doc/api-documentation/html/greeklexattribs_8cpp-source.html109
-rw-r--r--doc/api-documentation/html/greeklexattribs_8h-source.html48
-rw-r--r--doc/api-documentation/html/hebrewmcim_8cpp-source.html658
-rw-r--r--doc/api-documentation/html/hebrewmcim_8h-source.html34
-rw-r--r--doc/api-documentation/html/hierarchy.html93
-rw-r--r--doc/api-documentation/html/hrefcom_8cpp-source.html111
-rw-r--r--doc/api-documentation/html/hrefcom_8h-source.html60
-rw-r--r--doc/api-documentation/html/index.html26
-rw-r--r--doc/api-documentation/html/infblock_8h-source.html53
-rw-r--r--doc/api-documentation/html/infcodes_8h-source.html41
-rw-r--r--doc/api-documentation/html/inffast_8h-source.html31
-rw-r--r--doc/api-documentation/html/inffixed_8h-source.html165
-rw-r--r--doc/api-documentation/html/inftrees_8h-source.html72
-rw-r--r--doc/api-documentation/html/infutil_8h-source.html112
-rw-r--r--doc/api-documentation/html/inherit__graph__0.pngbin0 -> 723 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__1.pngbin0 -> 374 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__10.pngbin0 -> 444 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__11.pngbin0 -> 327 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__12.pngbin0 -> 307 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__13.pngbin0 -> 354 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__14.pngbin0 -> 399 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__15.pngbin0 -> 328 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__16.pngbin0 -> 282 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__17.pngbin0 -> 333 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__18.pngbin0 -> 314 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__19.pngbin0 -> 349 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__2.pngbin0 -> 401 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__20.pngbin0 -> 1561 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__21.pngbin0 -> 344 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__22.pngbin0 -> 367 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__23.pngbin0 -> 445 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__24.pngbin0 -> 365 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__25.pngbin0 -> 338 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__26.pngbin0 -> 1500 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__27.pngbin0 -> 2198 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__28.pngbin0 -> 373 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__29.pngbin0 -> 317 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__3.pngbin0 -> 304 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__30.pngbin0 -> 395 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__31.pngbin0 -> 334 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__32.pngbin0 -> 328 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__33.pngbin0 -> 315 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__34.pngbin0 -> 333 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__35.pngbin0 -> 306 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__36.pngbin0 -> 385 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__37.pngbin0 -> 388 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__38.pngbin0 -> 386 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__39.pngbin0 -> 331 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__4.pngbin0 -> 349 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__40.pngbin0 -> 293 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__41.pngbin0 -> 391 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__42.pngbin0 -> 458 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__43.pngbin0 -> 425 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__44.pngbin0 -> 301 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__45.pngbin0 -> 305 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__46.pngbin0 -> 319 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__5.pngbin0 -> 325 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__6.pngbin0 -> 312 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__7.pngbin0 -> 281 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__8.pngbin0 -> 393 bytes
-rw-r--r--doc/api-documentation/html/inherit__graph__9.pngbin0 -> 308 bytes
-rw-r--r--doc/api-documentation/html/inherits.html222
-rw-r--r--doc/api-documentation/html/jfbgen_8cpp-source.html256
-rw-r--r--doc/api-documentation/html/kjvidx_8cpp-source.html183
-rw-r--r--doc/api-documentation/html/latin1utf16_8cpp-source.html134
-rw-r--r--doc/api-documentation/html/latin1utf16_8h-source.html47
-rw-r--r--doc/api-documentation/html/latin1utf8_8cpp-source.html193
-rw-r--r--doc/api-documentation/html/latin1utf8_8h-source.html47
-rw-r--r--doc/api-documentation/html/listkey_8cpp-source.html270
-rw-r--r--doc/api-documentation/html/listkey_8h-source.html86
-rw-r--r--doc/api-documentation/html/localemgr_8cpp-source.html198
-rw-r--r--doc/api-documentation/html/localemgr_8h-source.html82
-rw-r--r--doc/api-documentation/html/lzsscomprs_8cpp-source.html679
-rw-r--r--doc/api-documentation/html/lzsscomprs_8h-source.html93
-rw-r--r--doc/api-documentation/html/markupfiltmgr_8cpp-source.html250
-rw-r--r--doc/api-documentation/html/markupfiltmgr_8h-source.html64
-rw-r--r--doc/api-documentation/html/mhcidx_8cpp-source.html306
-rw-r--r--doc/api-documentation/html/multimapwdef_8h-source.html45
-rw-r--r--doc/api-documentation/html/namespaces.html17
-rw-r--r--doc/api-documentation/html/namespacestd.html28
-rw-r--r--doc/api-documentation/html/nasb_8cpp-source.html121
-rw-r--r--doc/api-documentation/html/nuidx_8cpp-source.html252
-rw-r--r--doc/api-documentation/html/nullim_8cpp-source.html25
-rw-r--r--doc/api-documentation/html/nullim_8h-source.html28
-rw-r--r--doc/api-documentation/html/plainfootnotes_8cpp-source.html116
-rw-r--r--doc/api-documentation/html/plainfootnotes_8h-source.html73
-rw-r--r--doc/api-documentation/html/plainhtml_8cpp-source.html148
-rw-r--r--doc/api-documentation/html/plainhtml_8h-source.html50
-rw-r--r--doc/api-documentation/html/rawcom_8cpp-source.html289
-rw-r--r--doc/api-documentation/html/rawcom_8h-source.html69
-rw-r--r--doc/api-documentation/html/rawfiles_8cpp-source.html305
-rw-r--r--doc/api-documentation/html/rawfiles_8h-source.html74
-rw-r--r--doc/api-documentation/html/rawfilesgen_8cpp-source.html250
-rw-r--r--doc/api-documentation/html/rawgbf_2gbfidx_8cpp-source.html308
-rw-r--r--doc/api-documentation/html/rawgbf_8cpp-source.html98
-rw-r--r--doc/api-documentation/html/rawgbf_8h-source.html59
-rw-r--r--doc/api-documentation/html/rawgenbook_8cpp-source.html256
-rw-r--r--doc/api-documentation/html/rawgenbook_8h-source.html73
-rw-r--r--doc/api-documentation/html/rawld4_8cpp-source.html218
-rw-r--r--doc/api-documentation/html/rawld4_8h-source.html78
-rw-r--r--doc/api-documentation/html/rawld_8cpp-source.html218
-rw-r--r--doc/api-documentation/html/rawld_8h-source.html80
-rw-r--r--doc/api-documentation/html/rawstr4_8cpp-source.html576
-rw-r--r--doc/api-documentation/html/rawstr4_8h-source.html70
-rw-r--r--doc/api-documentation/html/rawstr_8cpp-source.html579
-rw-r--r--doc/api-documentation/html/rawstr_8h-source.html68
-rw-r--r--doc/api-documentation/html/rawtext_8cpp-source.html644
-rw-r--r--doc/api-documentation/html/rawtext_8h-source.html78
-rw-r--r--doc/api-documentation/html/rawverse_8cpp-source.html361
-rw-r--r--doc/api-documentation/html/rawverse_8h-source.html52
-rw-r--r--doc/api-documentation/html/regex_8h-source.html559
-rw-r--r--doc/api-documentation/html/roman_8h-source.html39
-rw-r--r--doc/api-documentation/html/rtfhtml_8cpp-source.html113
-rw-r--r--doc/api-documentation/html/rtfhtml_8h-source.html49
-rw-r--r--doc/api-documentation/html/rwphtml_8cpp-source.html201
-rw-r--r--doc/api-documentation/html/rwphtml_8h-source.html50
-rw-r--r--doc/api-documentation/html/rwpidx_8cpp-source.html280
-rw-r--r--doc/api-documentation/html/rwprtf_8cpp-source.html121
-rw-r--r--doc/api-documentation/html/rwprtf_8h-source.html52
-rw-r--r--doc/api-documentation/html/sapphire_8cpp-source.html242
-rw-r--r--doc/api-documentation/html/sapphire_8h-source.html67
-rw-r--r--doc/api-documentation/html/scsuutf8_8cpp-source.html234
-rw-r--r--doc/api-documentation/html/scsuutf8_8h-source.html53
-rw-r--r--doc/api-documentation/html/strkey_8cpp-source.html55
-rw-r--r--doc/api-documentation/html/strkey_8h-source.html58
-rw-r--r--doc/api-documentation/html/swbasicfilter_8cpp-source.html314
-rw-r--r--doc/api-documentation/html/swbasicfilter_8h-source.html99
-rw-r--r--doc/api-documentation/html/swcacher_8cpp-source.html57
-rw-r--r--doc/api-documentation/html/swcacher_8h-source.html51
-rw-r--r--doc/api-documentation/html/swcipher_8cpp-source.html137
-rw-r--r--doc/api-documentation/html/swcipher_8h-source.html63
-rw-r--r--doc/api-documentation/html/swcom_8cpp-source.html44
-rw-r--r--doc/api-documentation/html/swcom_8h-source.html57
-rw-r--r--doc/api-documentation/html/swcomprs_8cpp-source.html204
-rw-r--r--doc/api-documentation/html/swcomprs_8h-source.html59
-rw-r--r--doc/api-documentation/html/swconfig_8cpp-source.html179
-rw-r--r--doc/api-documentation/html/swconfig_8h-source.html75
-rw-r--r--doc/api-documentation/html/swdisp_8cpp-source.html41
-rw-r--r--doc/api-documentation/html/swdisp_8h-source.html51
-rw-r--r--doc/api-documentation/html/swdisprtf_8h-source.html116
-rw-r--r--doc/api-documentation/html/swdisprtfchap_8h-source.html80
-rw-r--r--doc/api-documentation/html/swfilter_8h-source.html84
-rw-r--r--doc/api-documentation/html/swfiltermgr_8cpp-source.html80
-rw-r--r--doc/api-documentation/html/swfiltermgr_8h-source.html76
-rw-r--r--doc/api-documentation/html/swgenbook_8cpp-source.html41
-rw-r--r--doc/api-documentation/html/swgenbook_8h-source.html56
-rw-r--r--doc/api-documentation/html/swinputmeth_8cpp-source.html32
-rw-r--r--doc/api-documentation/html/swinputmeth_8h-source.html36
-rw-r--r--doc/api-documentation/html/swkey_8cpp-source.html210
-rw-r--r--doc/api-documentation/html/swkey_8h-source.html142
-rw-r--r--doc/api-documentation/html/swld_8cpp-source.html69
-rw-r--r--doc/api-documentation/html/swld_8h-source.html60
-rw-r--r--doc/api-documentation/html/swlocale_8cpp-source.html155
-rw-r--r--doc/api-documentation/html/swlocale_8h-source.html74
-rw-r--r--doc/api-documentation/html/swlog_8cpp-source.html109
-rw-r--r--doc/api-documentation/html/swlog_8h-source.html60
-rw-r--r--doc/api-documentation/html/swmacs_8h-source.html44
-rw-r--r--doc/api-documentation/html/swmgr_8cpp-source.html1069
-rw-r--r--doc/api-documentation/html/swmgr_8h-source.html117
-rw-r--r--doc/api-documentation/html/swmodule_8cpp-source.html689
-rw-r--r--doc/api-documentation/html/swmodule_8h-source.html283
-rw-r--r--doc/api-documentation/html/swobject_8h-source.html57
-rw-r--r--doc/api-documentation/html/swtext_8cpp-source.html53
-rw-r--r--doc/api-documentation/html/swtext_8h-source.html55
-rw-r--r--doc/api-documentation/html/swunicod_8cpp-source.html149
-rw-r--r--doc/api-documentation/html/swunicod_8h-source.html42
-rw-r--r--doc/api-documentation/html/swversion_8cpp-source.html92
-rw-r--r--doc/api-documentation/html/swversion_8h-source.html59
-rw-r--r--doc/api-documentation/html/swwinlog_8h-source.html56
-rw-r--r--doc/api-documentation/html/sysdata_8h-source.html90
-rw-r--r--doc/api-documentation/html/tbdisp_8h-source.html53
-rw-r--r--doc/api-documentation/html/texts_2rawtext_2rtfidx_8cpp-source.html178
-rw-r--r--doc/api-documentation/html/texts_2ztext_2rawtxt2z_8cpp-source.html471
-rw-r--r--doc/api-documentation/html/thmlfootnotes_8cpp-source.html117
-rw-r--r--doc/api-documentation/html/thmlfootnotes_8h-source.html70
-rw-r--r--doc/api-documentation/html/thmlgbf_8cpp-source.html344
-rw-r--r--doc/api-documentation/html/thmlgbf_8h-source.html49
-rw-r--r--doc/api-documentation/html/thmlheadings_8cpp-source.html121
-rw-r--r--doc/api-documentation/html/thmlheadings_8h-source.html70
-rw-r--r--doc/api-documentation/html/thmlhtml_8cpp-source.html225
-rw-r--r--doc/api-documentation/html/thmlhtml_8h-source.html47
-rw-r--r--doc/api-documentation/html/thmlhtmlhref_8cpp-source.html283
-rw-r--r--doc/api-documentation/html/thmlhtmlhref_8h-source.html45
-rw-r--r--doc/api-documentation/html/thmllemma_8cpp-source.html111
-rw-r--r--doc/api-documentation/html/thmllemma_8h-source.html70
-rw-r--r--doc/api-documentation/html/thmlmorph_8cpp-source.html112
-rw-r--r--doc/api-documentation/html/thmlmorph_8h-source.html69
-rw-r--r--doc/api-documentation/html/thmlolb_8cpp-source.html257
-rw-r--r--doc/api-documentation/html/thmlolb_8h-source.html49
-rw-r--r--doc/api-documentation/html/thmlosis_8cpp-source.html344
-rw-r--r--doc/api-documentation/html/thmlosis_8h-source.html47
-rw-r--r--doc/api-documentation/html/thmlplain_8cpp-source.html215
-rw-r--r--doc/api-documentation/html/thmlplain_8h-source.html49
-rw-r--r--doc/api-documentation/html/thmlrtf_8cpp-source.html236
-rw-r--r--doc/api-documentation/html/thmlrtf_8h-source.html50
-rw-r--r--doc/api-documentation/html/thmlscripref_8cpp-source.html117
-rw-r--r--doc/api-documentation/html/thmlscripref_8h-source.html70
-rw-r--r--doc/api-documentation/html/thmlstrongs_8cpp-source.html170
-rw-r--r--doc/api-documentation/html/thmlstrongs_8h-source.html70
-rw-r--r--doc/api-documentation/html/thmlvariants_8cpp-source.html199
-rw-r--r--doc/api-documentation/html/thmlvariants_8h-source.html73
-rw-r--r--doc/api-documentation/html/treekey_8cpp-source.html44
-rw-r--r--doc/api-documentation/html/treekey_8h-source.html99
-rw-r--r--doc/api-documentation/html/treekeyidx_8cpp-source.html604
-rw-r--r--doc/api-documentation/html/treekeyidx_8h-source.html126
-rw-r--r--doc/api-documentation/html/trees_8h-source.html142
-rw-r--r--doc/api-documentation/html/unicodertf_8cpp-source.html89
-rw-r--r--doc/api-documentation/html/unicodertf_8h-source.html48
-rw-r--r--doc/api-documentation/html/unixstr_8cpp-source.html21
-rw-r--r--doc/api-documentation/html/unixstr_8h-source.html42
-rw-r--r--doc/api-documentation/html/untgz_8h-source.html23
-rw-r--r--doc/api-documentation/html/utf16utf8_8cpp-source.html109
-rw-r--r--doc/api-documentation/html/utf16utf8_8h-source.html47
-rw-r--r--doc/api-documentation/html/utf8arshaping_8cpp-source.html62
-rw-r--r--doc/api-documentation/html/utf8arshaping_8h-source.html60
-rw-r--r--doc/api-documentation/html/utf8bidireorder_8cpp-source.html69
-rw-r--r--doc/api-documentation/html/utf8bidireorder_8h-source.html60
-rw-r--r--doc/api-documentation/html/utf8cantillation_8cpp-source.html78
-rw-r--r--doc/api-documentation/html/utf8cantillation_8h-source.html69
-rw-r--r--doc/api-documentation/html/utf8greekaccents_8cpp-source.html266
-rw-r--r--doc/api-documentation/html/utf8greekaccents_8h-source.html69
-rw-r--r--doc/api-documentation/html/utf8hebrewpoints_8cpp-source.html69
-rw-r--r--doc/api-documentation/html/utf8hebrewpoints_8h-source.html69
-rw-r--r--doc/api-documentation/html/utf8html_8cpp-source.html80
-rw-r--r--doc/api-documentation/html/utf8html_8h-source.html47
-rw-r--r--doc/api-documentation/html/utf8latin1_8cpp-source.html88
-rw-r--r--doc/api-documentation/html/utf8latin1_8h-source.html48
-rw-r--r--doc/api-documentation/html/utf8nfc_8cpp-source.html60
-rw-r--r--doc/api-documentation/html/utf8nfc_8h-source.html60
-rw-r--r--doc/api-documentation/html/utf8nfkd_8cpp-source.html60
-rw-r--r--doc/api-documentation/html/utf8nfkd_8h-source.html60
-rw-r--r--doc/api-documentation/html/utf8transliterator_8cpp-source.html493
-rw-r--r--doc/api-documentation/html/utf8transliterator_8h-source.html85
-rw-r--r--doc/api-documentation/html/utf8utf16_8cpp-source.html93
-rw-r--r--doc/api-documentation/html/utf8utf16_8h-source.html47
-rw-r--r--doc/api-documentation/html/utilconf_8cpp-source.html33
-rw-r--r--doc/api-documentation/html/utilconf_8h-source.html22
-rw-r--r--doc/api-documentation/html/utilfuns_8h-source.html43
-rw-r--r--doc/api-documentation/html/utilstr_8cpp-source.html166
-rw-r--r--doc/api-documentation/html/utilstr_8h-source.html95
-rw-r--r--doc/api-documentation/html/versekey_8cpp-source.html1464
-rw-r--r--doc/api-documentation/html/versekey_8h-source.html220
-rw-r--r--doc/api-documentation/html/vntidx_8cpp-source.html199
-rw-r--r--doc/api-documentation/html/zcom_8cpp-source.html304
-rw-r--r--doc/api-documentation/html/zcom_8h-source.html83
-rw-r--r--doc/api-documentation/html/zconf_8h-source.html293
-rw-r--r--doc/api-documentation/html/zipcomprs_8cpp-source.html172
-rw-r--r--doc/api-documentation/html/zipcomprs_8h-source.html53
-rw-r--r--doc/api-documentation/html/zld_8cpp-source.html219
-rw-r--r--doc/api-documentation/html/zld_8h-source.html81
-rw-r--r--doc/api-documentation/html/zlib_8h-source.html907
-rw-r--r--doc/api-documentation/html/zstr_8cpp-source.html719
-rw-r--r--doc/api-documentation/html/zstr_8h-source.html86
-rw-r--r--doc/api-documentation/html/ztext_2gbfidx_8cpp-source.html675
-rw-r--r--doc/api-documentation/html/ztext_8cpp-source.html361
-rw-r--r--doc/api-documentation/html/ztext_8h-source.html84
-rw-r--r--doc/api-documentation/html/zutil_8h-source.html234
-rw-r--r--doc/api-documentation/html/zverse_8cpp-source.html529
-rw-r--r--doc/api-documentation/html/zverse_8h-source.html70
481 files changed, 58645 insertions, 0 deletions
diff --git a/doc/api-documentation/html/_greek2_greek_8cpp-source.html b/doc/api-documentation/html/_greek2_greek_8cpp-source.html
new file mode 100644
index 0000000..25e677f
--- /dev/null
+++ b/doc/api-documentation/html/_greek2_greek_8cpp-source.html
@@ -0,0 +1,915 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Greek2Greek.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>Greek2Greek.cpp</h1><div class="fragment"><pre>00001 <font class="comment">//*****************************************************************************</font>
+00002 <font class="comment">// Author : William Dicks ***</font>
+00003 <font class="comment">// Date Created: 10 February 1998 ***</font>
+00004 <font class="comment">// Purpose : Implementation for Greek to b-Greek conversion and vice ***</font>
+00005 <font class="comment">// : versa. ***</font>
+00006 <font class="comment">// File Name : Greek2Greek.cpp ***</font>
+00007 <font class="comment">// ***</font>
+00008 <font class="comment">// Author info : ---------------------------------------------------------- ***</font>
+00009 <font class="comment">// Address : 23 Tieroogpark ***</font>
+00010 <font class="comment">// : Hoewe Str ***</font>
+00011 <font class="comment">// : Elarduspark X3 ***</font>
+00012 <font class="comment">// : 0181 ***</font>
+00013 <font class="comment">// : South Africa ***</font>
+00014 <font class="comment">// Home Tel: +27 (0)12 345 3166 ***</font>
+00015 <font class="comment">// Cell No : +27 (0)82 577 4424 ***</font>
+00016 <font class="comment">// e-mail : wd@isis.co.za ***</font>
+00017 <font class="comment">// Church WWW : http://www.hatfield.co.za ***</font>
+00018 <font class="comment">// ***</font>
+00019 <font class="comment">// Bugfix info : ---------------------------------------------------------- ***</font>
+00020 <font class="comment">// Bug #1 : Greek Font character 197 converted to b-Greek "6" ***</font>
+00021 <font class="comment">// Date Fixed : 23 February 1998 ***</font>
+00022 <font class="comment">//*****************************************************************************</font>
+00023
+00024 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00027
+00028 <font class="preprocessor">#include "Greek2Greek.h"</font>
+00029 <font class="preprocessor">#include "GreekChars.h"</font>
+00030
+00031 <font class="comment">//*****************************************************************************</font>
+00032 <font class="comment">// Used to convert a string created by using the Greek font supplied with the</font>
+00033 <font class="comment">// Sword Project to a string that conforms to the b-Greek discussion list </font>
+00034 <font class="comment">// method of transliteration.</font>
+00035 <font class="comment">//*****************************************************************************</font>
+00036
+00037 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Greek2bGreek(
+00038 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult,
+00039 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText,
+00040 <font class="keywordtype">int</font> nMaxResultBuflen)
+00041 {
+00042 <font class="keywordtype">char</font> error;
+00043
+00044 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> NoOfChars = ParseGreek(sResult, sGreekText, nMaxResultBuflen);
+00045
+00046 <font class="keywordflow">if</font> (NoOfChars &lt; strlen((<font class="keywordtype">char</font> *)sGreekText))
+00047 error = 1;
+00048 <font class="keywordflow">else</font>
+00049 error = 0;
+00050
+00051 <font class="keywordflow">return</font> error;
+00052 }
+00053
+00054 <font class="comment">//*****************************************************************************</font>
+00055 <font class="comment">// Used to convert a string created by using the b-Greek method of </font>
+00056 <font class="comment">// transliteration to a string that can be converted to a Greek-font readable </font>
+00057 <font class="comment">// string.</font>
+00058 <font class="comment">//*****************************************************************************</font>
+00059
+00060 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> bGreek2Greek(
+00061 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult,
+00062 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText,
+00063 <font class="keywordtype">int</font> nMaxResultBuflen)
+00064 {
+00065 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> error;
+00066
+00067 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> NoOfChars = ParsebGreek(sResult, sGreekText, nMaxResultBuflen);
+00068
+00069 <font class="keywordflow">if</font> (NoOfChars &lt; strlen((<font class="keywordtype">char</font> *)sGreekText))
+00070 error = 1;
+00071 <font class="keywordflow">else</font>
+00072 error = 0;
+00073
+00074 <font class="keywordflow">return</font> error;
+00075 }
+00076
+00077 <font class="comment">//*****************************************************************************</font>
+00078 <font class="comment">// Parse a Greek font created string and return the b-Greek equivalent</font>
+00079 <font class="comment">//*****************************************************************************</font>
+00080
+00081 <font class="keywordtype">int</font> ParseGreek(
+00082 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult,
+00083 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText,
+00084 <font class="keywordtype">int</font> nMaxResultBuflen)
+00085 {
+00086 <font class="keywordtype">int</font> characters = 0;
+00087 <font class="keywordtype">int</font> index = 0;
+00088 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> tmp;
+00089 <font class="keywordtype">bool</font> iota; <font class="comment">// true = IOTA subscript; false = No IOTA</font>
+00090 <font class="keywordtype">bool</font> breathing; <font class="comment">// true = add breathing; false = no breathing</font>
+00091 <font class="keywordtype">bool</font> rough; <font class="comment">// true = rough breathing; false = smooth</font>
+00092
+00093 <font class="comment">// While text is not equal to NULL pointer</font>
+00094
+00095 <font class="keywordflow">while</font> (sGreekText[index] &amp;&amp; characters &lt; nMaxResultBuflen)
+00096 {
+00097 iota = breathing = rough = <font class="keyword">false</font>;
+00098 tmp = Font2char(sGreekText[index++], iota, breathing, rough);
+00099
+00100 <font class="keywordflow">if</font> (breathing)
+00101 {
+00102 <font class="keywordflow">if</font> (rough) <font class="comment">// Rough breathing</font>
+00103 {
+00104 sResult[characters++] = ROUGH; <font class="comment">// Add rough breathing "h"</font>
+00105 sResult[characters++] = tmp; <font class="comment">// Insert char</font>
+00106 }
+00107 <font class="keywordflow">else</font>
+00108 sResult[characters++] = tmp; <font class="comment">// Insert char</font>
+00109 }
+00110 <font class="keywordflow">else</font>
+00111 {
+00112 <font class="keywordflow">if</font> (iota) <font class="comment">// IOTA subscript</font>
+00113 {
+00114 sResult[characters++] = tmp; <font class="comment">// Insert char</font>
+00115 sResult[characters++] = IOTA_SUB; <font class="comment">// Add Iota subscript</font>
+00116 }
+00117 <font class="keywordflow">else</font>
+00118 sResult[characters++] = tmp; <font class="comment">// Insert char</font>
+00119 }
+00120 }
+00121 sResult[characters] = 0; <font class="comment">// Terminate the string</font>
+00122
+00123 <font class="keywordflow">return</font> index;
+00124 }
+00125
+00126 <font class="comment">//*****************************************************************************</font>
+00127 <font class="comment">// Parse a b-Greek string and return the Greek font equivalent</font>
+00128 <font class="comment">//*****************************************************************************</font>
+00129 <font class="keywordtype">int</font> ParsebGreek(
+00130 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult,
+00131 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText,
+00132 <font class="keywordtype">int</font> nMaxResultBuflen)
+00133 {
+00134 <font class="keywordtype">int</font> characters = 0;
+00135 <font class="keywordtype">int</font> index = 0;
+00136 <font class="keywordtype">bool</font> iota = <font class="keyword">false</font>; <font class="comment">// true = IOTA subscript; false = No IOTA</font>
+00137 <font class="keywordtype">bool</font> breathing = <font class="keyword">false</font>; <font class="comment">// true = add breathing; false = no breathing</font>
+00138 <font class="keywordtype">bool</font> rough = <font class="keyword">false</font>; <font class="comment">// true = rough breathing; false = smooth</font>
+00139 <font class="keywordtype">bool</font> fSigma = <font class="keyword">false</font>; <font class="comment">// Final sigma flag</font>
+00140 <font class="keywordtype">bool</font> nChar = <font class="keyword">true</font>; <font class="comment">// New char flag</font>
+00141
+00142 <font class="comment">// While text is not equal to NULL pointer</font>
+00143
+00144 <font class="keywordflow">while</font> (*sGreekText || characters &lt; nMaxResultBuflen)
+00145 {
+00146 <font class="keywordflow">if</font> (nChar)
+00147 {
+00148 <font class="keywordflow">if</font> (*sGreekText == (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)ROUGH)
+00149 {
+00150 rough = <font class="keyword">true</font>;
+00151 breathing = <font class="keyword">true</font>;
+00152 }
+00153 <font class="keywordflow">else</font>
+00154 {
+00155 rough = <font class="keyword">false</font>;
+00156 breathing = <font class="keyword">true</font>;
+00157 }
+00158
+00159 nChar = <font class="keyword">false</font>;
+00160 }
+00161 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (isPunctSpace(*(sGreekText + 1)))
+00162 {
+00163 fSigma = <font class="keyword">true</font>;
+00164 }
+00165 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*(sGreekText + 1) == (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)IOTA_SUB)
+00166 {
+00167 iota = <font class="keyword">true</font>;
+00168 }
+00169
+00170 <font class="keywordflow">if</font> (*sGreekText != (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)IOTA_SUB)
+00171 {
+00172 <font class="keywordflow">if</font> (*sGreekText == (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)<font class="charliteral">' '</font>)
+00173 {
+00174 nChar = <font class="keyword">true</font>;
+00175 }
+00176
+00177 <font class="keywordflow">if</font> (breathing)
+00178 {
+00179 <font class="keywordflow">if</font> (rough)
+00180 {
+00181 <font class="comment">// When we read a rough breather we want to increment the pointer </font>
+00182 <font class="comment">// to the right character before char2Font is called.</font>
+00183
+00184 sResult[index++] =
+00185 char2Font(*++sGreekText, fSigma, iota, breathing, rough);
+00186
+00187 sGreekText++;
+00188 characters++;
+00189 }
+00190 <font class="keywordflow">else</font>
+00191 {
+00192 sResult[index++] =
+00193 char2Font(*sGreekText++, fSigma, iota, breathing, rough);
+00194 characters++;
+00195 }
+00196 }
+00197 <font class="keywordflow">else</font>
+00198 {
+00199 sResult[index++] =
+00200 char2Font(*sGreekText++, fSigma, iota, breathing, rough);
+00201 characters++;
+00202 }
+00203 }
+00204 <font class="keywordflow">else</font>
+00205 {
+00206 sGreekText++;
+00207 characters++;
+00208 }
+00209
+00210 fSigma = iota = breathing = rough = <font class="keyword">false</font>;
+00211 }
+00212
+00213 sResult[index] = 0; <font class="comment">// Terminate the string</font>
+00214
+00215 <font class="keywordflow">return</font> characters;
+00216 }
+00217
+00218
+00219 <font class="comment">//*****************************************************************************</font>
+00220 <font class="comment">// Convert a character to a GREEK font character</font>
+00221 <font class="comment">//*****************************************************************************</font>
+00222 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> char2Font(
+00223 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> letter, <font class="comment">// bGreek letter to convert to Font letter</font>
+00224 <font class="keywordtype">bool</font> finalSigma, <font class="comment">// Is it a final SIGMA</font>
+00225 <font class="keywordtype">bool</font> iota, <font class="comment">// true = IOTA subscript; false = No IOTA</font>
+00226 <font class="keywordtype">bool</font> breathing, <font class="comment">// true = add breathing; false = no breathing</font>
+00227 <font class="keywordtype">bool</font> rough) <font class="comment">// true = rough breathing; false = smooth</font>
+00228 {
+00229 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> charFont = 0;
+00230
+00231 <font class="keywordflow">switch</font> (letter)
+00232 {
+00233 <font class="keywordflow">case</font> ALPHA: <font class="comment">// A</font>
+00234 <font class="keywordflow">if</font> (breathing)
+00235 {
+00236 <font class="keywordflow">if</font> (rough)
+00237 {
+00238 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_ALPHA;
+00239 }
+00240 <font class="keywordflow">else</font>
+00241 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_ALPHA;
+00242 }
+00243 <font class="keywordflow">else</font>
+00244 {
+00245 <font class="keywordflow">if</font> (iota)
+00246 {
+00247 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gIOTA_ALPHA;
+00248 }
+00249 <font class="keywordflow">else</font>
+00250 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gALPHA;
+00251 }
+00252
+00253 <font class="keywordflow">break</font>;
+00254
+00255 <font class="keywordflow">case</font> BETA: <font class="comment">// B</font>
+00256 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gBETA;
+00257
+00258 <font class="keywordflow">break</font>;
+00259
+00260 <font class="keywordflow">case</font> CHI: <font class="comment">// C</font>
+00261 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gCHI;
+00262
+00263 <font class="keywordflow">break</font>;
+00264
+00265 <font class="keywordflow">case</font> DELTA: <font class="comment">// D</font>
+00266 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gDELTA;
+00267
+00268 <font class="keywordflow">break</font>;
+00269
+00270 <font class="keywordflow">case</font> EPSILON: <font class="comment">// E</font>
+00271 <font class="keywordflow">if</font> (breathing)
+00272 {
+00273 <font class="keywordflow">if</font> (rough)
+00274 {
+00275 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_EPSILON;
+00276 }
+00277 <font class="keywordflow">else</font>
+00278 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_EPSILON;
+00279 }
+00280 <font class="keywordflow">else</font>
+00281 {
+00282 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gEPSILON;
+00283 }
+00284
+00285 <font class="keywordflow">break</font>;
+00286
+00287 <font class="keywordflow">case</font> PHI: <font class="comment">// F</font>
+00288 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gPHI;
+00289
+00290 <font class="keywordflow">break</font>;
+00291
+00292 <font class="keywordflow">case</font> GAMMA: <font class="comment">// G</font>
+00293 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gGAMMA;
+00294
+00295 <font class="keywordflow">break</font>;
+00296
+00297 <font class="keywordflow">case</font> ETA: <font class="comment">// H</font>
+00298 <font class="keywordflow">if</font> (breathing)
+00299 {
+00300 <font class="keywordflow">if</font> (rough)
+00301 {
+00302 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_ETA;
+00303 }
+00304 <font class="keywordflow">else</font>
+00305 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_ETA;
+00306 }
+00307 <font class="keywordflow">else</font>
+00308 {
+00309 <font class="keywordflow">if</font> (iota)
+00310 {
+00311 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gIOTA_ETA;
+00312 }
+00313 <font class="keywordflow">else</font>
+00314 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gETA;
+00315 }
+00316
+00317 <font class="keywordflow">break</font>;
+00318
+00319 <font class="keywordflow">case</font> IOTA: <font class="comment">// I</font>
+00320 <font class="keywordflow">if</font> (breathing)
+00321 {
+00322 <font class="keywordflow">if</font> (rough)
+00323 {
+00324 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_IOTA;
+00325 }
+00326 <font class="keywordflow">else</font>
+00327 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_IOTA;
+00328 }
+00329 <font class="keywordflow">else</font>
+00330 {
+00331 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gIOTA;
+00332 }
+00333
+00334 <font class="keywordflow">break</font>;
+00335
+00336 <font class="keywordflow">case</font> KAPPA: <font class="comment">// K</font>
+00337 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gKAPPA;
+00338
+00339 <font class="keywordflow">break</font>;
+00340
+00341 <font class="keywordflow">case</font> LAMBDA: <font class="comment">// L</font>
+00342 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gLAMBDA;
+00343
+00344 <font class="keywordflow">break</font>;
+00345
+00346 <font class="keywordflow">case</font> MU: <font class="comment">// M</font>
+00347 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gMU;
+00348
+00349 <font class="keywordflow">break</font>;
+00350
+00351 <font class="keywordflow">case</font> NU: <font class="comment">// N</font>
+00352 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNU;
+00353
+00354 <font class="keywordflow">break</font>;
+00355
+00356 <font class="keywordflow">case</font> OMICRON: <font class="comment">// O</font>
+00357 <font class="keywordflow">if</font> (breathing)
+00358 {
+00359 <font class="keywordflow">if</font> (rough)
+00360 {
+00361 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_OMICRON;
+00362 }
+00363 <font class="keywordflow">else</font>
+00364 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_OMICRON;
+00365 }
+00366 <font class="keywordflow">else</font>
+00367 {
+00368 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gOMICRON;
+00369 }
+00370
+00371 <font class="keywordflow">break</font>;
+00372
+00373 <font class="keywordflow">case</font> PI: <font class="comment">// P</font>
+00374 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gPI;
+00375
+00376 <font class="keywordflow">break</font>;
+00377
+00378 <font class="keywordflow">case</font> THETA: <font class="comment">// Q</font>
+00379 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gTHETA;
+00380
+00381 <font class="keywordflow">break</font>;
+00382
+00383 <font class="keywordflow">case</font> RHO: <font class="comment">// R</font>
+00384 <font class="keywordflow">if</font> (breathing)
+00385 {
+00386 <font class="keywordflow">if</font> (rough)
+00387 {
+00388 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_RHO;
+00389 }
+00390 <font class="keywordflow">else</font>
+00391 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_RHO;
+00392 }
+00393 <font class="keywordflow">else</font>
+00394 {
+00395 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gRHO;
+00396 }
+00397
+00398 <font class="keywordflow">break</font>;
+00399
+00400 <font class="keywordflow">case</font> SIGMA: <font class="comment">// S</font>
+00401 <font class="keywordflow">if</font> (finalSigma)
+00402 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gSIGMA_END;
+00403 <font class="keywordflow">else</font>
+00404 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gSIGMA;
+00405
+00406 <font class="keywordflow">break</font>;
+00407
+00408 <font class="keywordflow">case</font> TAU: <font class="comment">// T</font>
+00409 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gTAU;
+00410
+00411 <font class="keywordflow">break</font>;
+00412
+00413 <font class="keywordflow">case</font> UPSILON: <font class="comment">// U</font>
+00414 <font class="keywordflow">if</font> (breathing)
+00415 {
+00416 <font class="keywordflow">if</font> (rough)
+00417 {
+00418 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_UPSILON;
+00419 }
+00420 <font class="keywordflow">else</font>
+00421 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_UPSILON;
+00422 }
+00423 <font class="keywordflow">else</font>
+00424 {
+00425 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gUPSILON;
+00426 }
+00427
+00428 <font class="keywordflow">break</font>;
+00429
+00430 <font class="keywordflow">case</font> OMEGA: <font class="comment">// W</font>
+00431 <font class="keywordflow">if</font> (breathing)
+00432 {
+00433 <font class="keywordflow">if</font> (rough)
+00434 {
+00435 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gROUGH_OMEGA;
+00436 }
+00437 <font class="keywordflow">else</font>
+00438 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gNON_ROUGH_OMEGA;
+00439 }
+00440 <font class="keywordflow">else</font>
+00441 {
+00442 <font class="keywordflow">if</font> (iota)
+00443 {
+00444 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gIOTA_OMEGA;
+00445 }
+00446 <font class="keywordflow">else</font>
+00447 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gOMEGA;
+00448 }
+00449
+00450 <font class="keywordflow">break</font>;
+00451
+00452 <font class="keywordflow">case</font> XI: <font class="comment">// X</font>
+00453 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gXI;
+00454
+00455 <font class="keywordflow">break</font>;
+00456
+00457 <font class="keywordflow">case</font> PSI: <font class="comment">// Y</font>
+00458 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gPSI;
+00459
+00460 <font class="keywordflow">break</font>;
+00461
+00462 <font class="keywordflow">case</font> ZETA: <font class="comment">// Z</font>
+00463 charFont = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)gZETA;
+00464
+00465 <font class="keywordflow">break</font>;
+00466
+00467 <font class="keywordflow">default</font>:
+00468 <font class="keywordflow">if</font> (ispunct(letter) || isspace(letter))
+00469 {
+00470 charFont = getGreekPunct(letter);
+00471 }
+00472
+00473 <font class="keywordflow">if</font> (isdigit(letter))
+00474 charFont = letter;
+00475
+00476 <font class="keywordflow">break</font>;
+00477 }
+00478
+00479 <font class="keywordflow">return</font> charFont;
+00480 }
+00481
+00482
+00483 <font class="comment">//*****************************************************************************</font>
+00484 <font class="comment">// Convert a GREEK font character to a character</font>
+00485 <font class="comment">//*****************************************************************************</font>
+00486 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Font2char(
+00487 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> letter, <font class="comment">// bGreek letter to convert to Font letter</font>
+00488 <font class="keywordtype">bool</font> &amp;iota, <font class="comment">// true = IOTA subscript; false = No IOTA</font>
+00489 <font class="keywordtype">bool</font> &amp;breathing, <font class="comment">// true = add breathing; false = no breathing</font>
+00490 <font class="keywordtype">bool</font> &amp;rough) <font class="comment">// true = rough breathing; false = smooth</font>
+00491 {
+00492 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> character = 0;
+00493
+00494 <font class="keywordflow">if</font> (getSpecialChar(letter, letter))
+00495 {
+00496 <font class="keywordflow">switch</font> (letter)
+00497 {
+00498 <font class="keywordflow">case</font> gROUGH_ALPHA: <font class="comment">// hA</font>
+00499 <font class="keywordflow">case</font> gIOTA_ALPHA: <font class="comment">// Ai</font>
+00500 <font class="keywordflow">case</font> gNON_ROUGH_ALPHA: <font class="comment">// hA</font>
+00501 character = ALPHA;
+00502
+00503 <font class="keywordflow">if</font> (letter == gIOTA_ALPHA)
+00504 iota = <font class="keyword">true</font>;
+00505 <font class="keywordflow">else</font>
+00506 iota = <font class="keyword">false</font>;
+00507
+00508 <font class="keywordflow">if</font> (letter == gROUGH_ALPHA)
+00509 {
+00510 breathing = <font class="keyword">true</font>;
+00511 rough = <font class="keyword">true</font>;
+00512 }
+00513 <font class="keywordflow">else</font>
+00514 {
+00515 breathing = <font class="keyword">false</font>;
+00516 rough = <font class="keyword">false</font>;
+00517 }
+00518
+00519 <font class="keywordflow">break</font>;
+00520
+00521 <font class="keywordflow">case</font> gROUGH_EPSILON: <font class="comment">// hE</font>
+00522 <font class="keywordflow">case</font> gNON_ROUGH_EPSILON: <font class="comment">// hE</font>
+00523 character = EPSILON;
+00524 iota = <font class="keyword">false</font>;
+00525
+00526 <font class="keywordflow">if</font> (letter == gROUGH_EPSILON)
+00527 {
+00528 breathing = <font class="keyword">true</font>;
+00529 rough = <font class="keyword">true</font>;
+00530 }
+00531 <font class="keywordflow">else</font>
+00532 {
+00533 breathing = <font class="keyword">false</font>;
+00534 rough = <font class="keyword">false</font>;
+00535 }
+00536
+00537 <font class="keywordflow">break</font>;
+00538
+00539 <font class="keywordflow">case</font> gROUGH_ETA: <font class="comment">// hH</font>
+00540 <font class="keywordflow">case</font> gIOTA_ETA: <font class="comment">// Ei</font>
+00541 <font class="keywordflow">case</font> gNON_ROUGH_ETA: <font class="comment">// hH</font>
+00542 character = ETA;
+00543
+00544 <font class="keywordflow">if</font> (letter == gIOTA_ETA)
+00545 iota = <font class="keyword">true</font>;
+00546 <font class="keywordflow">else</font>
+00547 iota = <font class="keyword">false</font>;
+00548
+00549 <font class="keywordflow">if</font> (letter == gROUGH_ETA)
+00550 {
+00551 breathing = <font class="keyword">true</font>;
+00552 rough = <font class="keyword">true</font>;
+00553 }
+00554 <font class="keywordflow">else</font>
+00555 {
+00556 breathing = <font class="keyword">false</font>;
+00557 rough = <font class="keyword">false</font>;
+00558 }
+00559
+00560 <font class="keywordflow">break</font>;
+00561
+00562 <font class="keywordflow">case</font> gROUGH_IOTA: <font class="comment">// hH</font>
+00563 <font class="keywordflow">case</font> gNON_ROUGH_IOTA: <font class="comment">// hH</font>
+00564 character = IOTA;
+00565 iota = <font class="keyword">false</font>;
+00566
+00567 <font class="keywordflow">if</font> (letter == gROUGH_IOTA)
+00568 {
+00569 breathing = <font class="keyword">true</font>;
+00570 rough = <font class="keyword">true</font>;
+00571 }
+00572 <font class="keywordflow">else</font>
+00573 {
+00574 breathing = <font class="keyword">false</font>;
+00575 rough = <font class="keyword">false</font>;
+00576 }
+00577
+00578 <font class="keywordflow">break</font>;
+00579
+00580 <font class="keywordflow">case</font> gROUGH_OMICRON: <font class="comment">// hH</font>
+00581 <font class="keywordflow">case</font> gNON_ROUGH_OMICRON: <font class="comment">// hH</font>
+00582 character = OMICRON;
+00583 iota = <font class="keyword">false</font>;
+00584
+00585 <font class="keywordflow">if</font> (letter == gROUGH_OMICRON)
+00586 {
+00587 breathing = <font class="keyword">true</font>;
+00588 rough = <font class="keyword">true</font>;
+00589 }
+00590 <font class="keywordflow">else</font>
+00591 {
+00592 breathing = <font class="keyword">false</font>;
+00593 rough = <font class="keyword">false</font>;
+00594 }
+00595
+00596 <font class="keywordflow">break</font>;
+00597
+00598 <font class="keywordflow">case</font> gROUGH_RHO: <font class="comment">// hR</font>
+00599 <font class="keywordflow">case</font> gNON_ROUGH_RHO: <font class="comment">// hR</font>
+00600 character = RHO;
+00601 iota = <font class="keyword">false</font>;
+00602
+00603 <font class="keywordflow">if</font> (letter == gROUGH_RHO)
+00604 {
+00605 breathing = <font class="keyword">true</font>;
+00606 rough = <font class="keyword">true</font>;
+00607 }
+00608 <font class="keywordflow">else</font>
+00609 {
+00610 breathing = <font class="keyword">false</font>;
+00611 rough = <font class="keyword">false</font>;
+00612 }
+00613
+00614 <font class="keywordflow">break</font>;
+00615
+00616 <font class="keywordflow">case</font> gROUGH_UPSILON: <font class="comment">// hU</font>
+00617 <font class="keywordflow">case</font> gNON_ROUGH_UPSILON: <font class="comment">// hU</font>
+00618 character = UPSILON;
+00619 iota = <font class="keyword">false</font>;
+00620
+00621 <font class="keywordflow">if</font> (letter == gROUGH_UPSILON)
+00622 {
+00623 breathing = <font class="keyword">true</font>;
+00624 rough = <font class="keyword">true</font>;
+00625 }
+00626 <font class="keywordflow">else</font>
+00627 {
+00628 breathing = <font class="keyword">false</font>;
+00629 rough = <font class="keyword">false</font>;
+00630 }
+00631
+00632 <font class="keywordflow">break</font>;
+00633
+00634 <font class="keywordflow">case</font> gROUGH_OMEGA: <font class="comment">// hW</font>
+00635 <font class="keywordflow">case</font> gIOTA_OMEGA: <font class="comment">// Wi</font>
+00636 <font class="keywordflow">case</font> gNON_ROUGH_OMEGA: <font class="comment">// hW</font>
+00637 character = OMEGA;
+00638
+00639 <font class="keywordflow">if</font> (letter == gIOTA_OMEGA)
+00640 iota = <font class="keyword">true</font>;
+00641 <font class="keywordflow">else</font>
+00642 iota = <font class="keyword">false</font>;
+00643
+00644 <font class="keywordflow">if</font> (letter == gROUGH_OMEGA)
+00645 {
+00646 breathing = <font class="keyword">true</font>;
+00647 rough = <font class="keyword">true</font>;
+00648 }
+00649 <font class="keywordflow">else</font>
+00650 {
+00651 breathing = <font class="keyword">false</font>;
+00652 rough = <font class="keyword">false</font>;
+00653 }
+00654
+00655 <font class="keywordflow">break</font>;
+00656 }
+00657 } <font class="comment">// if (letter &gt; SPECIAL_GREEK)</font>
+00658 <font class="keywordflow">else</font>
+00659 {
+00660 <font class="keywordflow">if</font> (letter == gSIGMA_END)
+00661 {
+00662 character = SIGMA;
+00663 }
+00664 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (ispunct(letter) || isspace(letter))
+00665 {
+00666 character = getbGreekPunct(letter);
+00667 }
+00668 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (isdigit(letter))
+00669 {
+00670 character = letter;
+00671 }
+00672 <font class="keywordflow">else</font>
+00673 {
+00674 character = letter - 32;
+00675 }
+00676 }
+00677
+00678 <font class="keywordflow">return</font> character;
+00679 }
+00680
+00681 <font class="comment">//*****************************************************************************</font>
+00682 <font class="comment">// Identify and return a bGreek letter from a special font char</font>
+00683 <font class="comment">//*****************************************************************************</font>
+00684 <font class="keywordtype">bool</font> getSpecialChar(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Font, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> &amp;letter)
+00685 {
+00686 <font class="keywordtype">bool</font> Yes = <font class="keyword">false</font>;
+00687 letter = Font;
+00688
+00689 <font class="keywordflow">if</font> (Font &gt;= 133 &amp;&amp; Font &lt;= 144)
+00690 {
+00691 letter = gIOTA;
+00692 Font = gIOTA;
+00693 }
+00694
+00695 <font class="keywordflow">if</font> (Font &gt;= 154 &amp;&amp; Font &lt;= 159)
+00696 {
+00697 letter = gEPSILON;
+00698 Font = gEPSILON;
+00699 }
+00700
+00701 <font class="keywordflow">if</font> (Font &gt;= 163 &amp;&amp; Font &lt;= 171)
+00702 {
+00703 letter = gALPHA;
+00704 Font = gALPHA;
+00705 }
+00706
+00707 <font class="keywordflow">if</font> (Font &gt;= 172 &amp;&amp; Font &lt;= 182)
+00708 {
+00709 letter = gIOTA_ALPHA;
+00710 Font = gIOTA_ALPHA;
+00711 Yes = <font class="keyword">true</font>;
+00712 }
+00713
+00714 <font class="keywordflow">if</font> (Font &gt;= 187 &amp;&amp; Font &lt;= 195)
+00715 {
+00716 letter = gETA;
+00717 Font = gETA;
+00718 }
+00719
+00720 <font class="keywordflow">if</font> (Font &gt;= 197 &amp;&amp; Font &lt;= 207)
+00721 {
+00722 letter = gIOTA_ETA;
+00723 Font = gIOTA_ETA;
+00724 Yes = <font class="keyword">true</font>;
+00725 }
+00726
+00727 <font class="keywordflow">if</font> ((Font &gt;= 210 &amp;&amp; Font &lt;= 215) || Font == 253)
+00728 {
+00729 letter = gOMICRON;
+00730 Font = gOMICRON;
+00731 }
+00732
+00733 <font class="keywordflow">if</font> (Font &gt;= 218 &amp;&amp; Font &lt;= 229)
+00734 {
+00735 letter = gUPSILON;
+00736 Font = gUPSILON;
+00737 }
+00738
+00739 <font class="keywordflow">if</font> (Font &gt;= 232 &amp;&amp; Font &lt;= 240)
+00740 {
+00741 letter = gOMEGA;
+00742 Font = gOMEGA;
+00743 }
+00744
+00745 <font class="keywordflow">if</font> (Font &gt;= 241 &amp;&amp; Font &lt;= 251)
+00746 {
+00747 letter = gIOTA_OMEGA;
+00748 Font = gIOTA_OMEGA;
+00749 Yes = <font class="keyword">true</font>;
+00750 }
+00751
+00752 Yes = SpecialGreek(Font);
+00753
+00754 <font class="keywordflow">return</font> Yes;
+00755 }
+00756
+00757
+00758 <font class="comment">//*****************************************************************************</font>
+00759 <font class="comment">// true if the font character is a special character; false it isn't</font>
+00760 <font class="comment">//*****************************************************************************</font>
+00761
+00762 <font class="keywordtype">bool</font> SpecialGreek(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Font)
+00763 {
+00764 <font class="keywordtype">bool</font> res = <font class="keyword">false</font>;
+00765
+00766 <font class="keywordflow">switch</font> (Font)
+00767 {
+00768 <font class="keywordflow">case</font> gROUGH_ALPHA:
+00769 <font class="keywordflow">case</font> gROUGH_EPSILON:
+00770 <font class="keywordflow">case</font> gROUGH_ETA:
+00771 <font class="keywordflow">case</font> gROUGH_IOTA:
+00772 <font class="keywordflow">case</font> gROUGH_OMICRON:
+00773 <font class="keywordflow">case</font> gROUGH_RHO:
+00774 <font class="keywordflow">case</font> gROUGH_UPSILON:
+00775 <font class="keywordflow">case</font> gROUGH_OMEGA:
+00776 <font class="keywordflow">case</font> gIOTA_ALPHA:
+00777 <font class="keywordflow">case</font> gIOTA_ETA:
+00778 <font class="keywordflow">case</font> gIOTA_OMEGA:
+00779 <font class="keywordflow">case</font> gNON_ROUGH_ALPHA:
+00780 <font class="keywordflow">case</font> gNON_ROUGH_EPSILON:
+00781 <font class="keywordflow">case</font> gNON_ROUGH_ETA:
+00782 <font class="keywordflow">case</font> gNON_ROUGH_IOTA:
+00783 <font class="keywordflow">case</font> gNON_ROUGH_OMICRON:
+00784 <font class="keywordflow">case</font> gNON_ROUGH_RHO:
+00785 <font class="keywordflow">case</font> gNON_ROUGH_UPSILON:
+00786 <font class="keywordflow">case</font> gNON_ROUGH_OMEGA:
+00787 res = <font class="keyword">true</font>;
+00788
+00789 <font class="keywordflow">break</font>;
+00790 }
+00791
+00792 <font class="keywordflow">return</font> res;
+00793 }
+00794
+00795
+00796 <font class="comment">//*****************************************************************************</font>
+00797 <font class="comment">// Return Greek font puntuation from bGreek punstuation</font>
+00798 <font class="comment">//*****************************************************************************</font>
+00799
+00800 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> getGreekPunct(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> bGreek)
+00801 {
+00802 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Font;
+00803
+00804 <font class="keywordflow">switch</font> (bGreek)
+00805 {
+00806 <font class="keywordflow">case</font> COMMA:
+00807 Font = gCOMMA;
+00808 <font class="keywordflow">break</font>;
+00809
+00810 <font class="keywordflow">case</font> STOP:
+00811 Font = gSTOP;
+00812 <font class="keywordflow">break</font>;
+00813
+00814 <font class="keywordflow">case</font> SEMI_COLON:
+00815 Font = gSEMI_COLON;
+00816 <font class="keywordflow">break</font>;
+00817
+00818 <font class="keywordflow">case</font> QUESTION:
+00819 Font = gQUESTION;
+00820 <font class="keywordflow">break</font>;
+00821
+00822 <font class="keywordflow">default</font>:
+00823 Font = <font class="charliteral">' '</font>;
+00824 <font class="keywordflow">break</font>;
+00825 }
+00826
+00827 <font class="keywordflow">return</font> Font;
+00828 }
+00829
+00830
+00831 <font class="comment">//*****************************************************************************</font>
+00832 <font class="comment">// Return bGreek puntuation from Greek font punstuation</font>
+00833 <font class="comment">//*****************************************************************************</font>
+00834
+00835 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> getbGreekPunct(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Greek)
+00836 {
+00837 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> character;
+00838
+00839 <font class="keywordflow">switch</font> (Greek)
+00840 {
+00841 <font class="keywordflow">case</font> gCOMMA:
+00842 character = COMMA;
+00843 <font class="keywordflow">break</font>;
+00844
+00845 <font class="keywordflow">case</font> gSTOP:
+00846 character = STOP;
+00847 <font class="keywordflow">break</font>;
+00848
+00849 <font class="keywordflow">case</font> gSEMI_COLON:
+00850 character = SEMI_COLON;
+00851 <font class="keywordflow">break</font>;
+00852
+00853 <font class="keywordflow">case</font> gQUESTION:
+00854 character = QUESTION;
+00855 <font class="keywordflow">break</font>;
+00856
+00857 <font class="keywordflow">default</font>:
+00858 character = <font class="charliteral">' '</font>;
+00859 <font class="keywordflow">break</font>;
+00860 }
+00861
+00862 <font class="keywordflow">return</font> character;
+00863 }
+00864
+00865
+00866 <font class="comment">//*****************************************************************************</font>
+00867 <font class="comment">// Is the character punctuation or a space: true it is, false it isn't</font>
+00868 <font class="comment">//*****************************************************************************</font>
+00869
+00870 <font class="keywordtype">bool</font> isPunctSpace(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> c)
+00871 {
+00872 <font class="keywordflow">return</font> (ispunct(c) || isspace(c) || c == 0) ? <font class="keyword">true</font> : <font class="keyword">false</font>;
+00873 }
+00874
+00875 <font class="preprocessor">#ifdef __TEST</font>
+00876 <font class="preprocessor"></font>
+00877 <font class="keywordtype">int</font> main()
+00878 {
+00879 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)
+00880 <font class="stringliteral">"1„£kwboj qeoà kaˆ kur…ou „hsoà cristoà doàloj ta‹j dèdeka fula‹j ta‹j ™n tÍ diaspor´ ca…rein."</font>;
+00881 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult = <font class="keyword">new</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>[100];
+00882
+00883 <font class="keywordtype">char</font> result = Greek2bGreek(
+00884 sResult,
+00885 sGreekText,
+00886 100);
+00887
+00888 strset((<font class="keywordtype">char</font> *)sResult, 0);
+00889 strset((<font class="keywordtype">char</font> *)sGreekText, 0);
+00890
+00891 sGreekText = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)<font class="stringliteral">"18 EIS AFESIN TWN hAMARTWN hUMWN?"</font>;
+00892 result = bGreek2Greek(
+00893 sResult,
+00894 sGreekText,
+00895 33);
+00896
+00897 <font class="comment">//delete[] sGreekText;</font>
+00898 <font class="keyword">delete</font>[] sResult;
+00899 }
+00900
+00901 <font class="preprocessor">#endif // __TEST</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/_greek2_greek_8h-source.html b/doc/api-documentation/html/_greek2_greek_8h-source.html
new file mode 100644
index 0000000..2284aa1
--- /dev/null
+++ b/doc/api-documentation/html/_greek2_greek_8h-source.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Greek2Greek.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>Greek2Greek.h</h1><div class="fragment"><pre>00001 <font class="comment">//*****************************************************************************</font>
+00002 <font class="comment">// Author : William Dicks ***</font>
+00003 <font class="comment">// Date Created: 10 February 1998 ***</font>
+00004 <font class="comment">// Purpose : Interface for Greek to b-Greek conversion and vice versa ***</font>
+00005 <font class="comment">// File Name : Greek2Greek.h ***</font>
+00006 <font class="comment">// ***</font>
+00007 <font class="comment">// Author info : ---------------------------------------------------------- ***</font>
+00008 <font class="comment">// Address : 23 Tieroogpark ***</font>
+00009 <font class="comment">// : Hoewe Str ***</font>
+00010 <font class="comment">// : Elarduspark X3 ***</font>
+00011 <font class="comment">// : 0181 ***</font>
+00012 <font class="comment">// : South Africa ***</font>
+00013 <font class="comment">// Home Tel: +27 (0)12 345 3166 ***</font>
+00014 <font class="comment">// Cell No : +27 (0)82 577 4424 ***</font>
+00015 <font class="comment">// e-mail : wd@isis.co.za ***</font>
+00016 <font class="comment">// Church WWW : http://www.hatfield.co.za ***</font>
+00017 <font class="comment">//*****************************************************************************</font>
+00018 <font class="comment">/*</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> * $Id: _greek2_greek_8h-source.html,v 1.7 2002/06/20 20:23:07 mgruner Exp $</font>
+00021 <font class="comment"> *</font>
+00022 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00023 <font class="comment"> * CrossWire Bible Society</font>
+00024 <font class="comment"> * P. O. Box 2528</font>
+00025 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00026 <font class="comment"> *</font>
+00027 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00028 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00029 <font class="comment"> * Free Software Foundation version 2.</font>
+00030 <font class="comment"> *</font>
+00031 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00032 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00033 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00034 <font class="comment"> * General Public License for more details.</font>
+00035 <font class="comment"> *</font>
+00036 <font class="comment"> */</font>
+00037
+00038 <font class="preprocessor">#ifndef __GREEK2GREEK</font>
+00039 <font class="preprocessor"></font><font class="preprocessor">#define __GREEK2GREEK</font>
+00040 <font class="preprocessor"></font>
+00041 <font class="comment">//*****************************************************************************</font>
+00042 <font class="comment">// Used to convert a string created by using the Greek font supplied with the</font>
+00043 <font class="comment">// Sword Project to a string that conforms to the b-Greek discussion list </font>
+00044 <font class="comment">// method of transliteration.</font>
+00045 <font class="comment">//*****************************************************************************</font>
+00046 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Greek2bGreek (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText,
+00047 <font class="keywordtype">int</font> nMaxResultBuflen);
+00048
+00049 <font class="comment">//*****************************************************************************</font>
+00050 <font class="comment">// Used to convert a string created by using the b-Greek method of </font>
+00051 <font class="comment">// transliteration to a string that can be converted to a Greek-font readable </font>
+00052 <font class="comment">// string.</font>
+00053 <font class="comment">//*****************************************************************************</font>
+00054 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> bGreek2Greek (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult,
+00055 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText, <font class="keywordtype">int</font> nMaxResultBuflen);
+00056
+00057 <font class="comment">//*****************************************************************************</font>
+00058 <font class="comment">// Parse a Greek font created string and return the b-Greek equivalent</font>
+00059 <font class="comment">//*****************************************************************************</font>
+00060 <font class="keywordtype">int</font> ParseGreek (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult,
+00061 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText, <font class="keywordtype">int</font> nMaxResultBuflen);
+00062
+00063 <font class="comment">//*****************************************************************************</font>
+00064 <font class="comment">// Parse a b-Greek string and return the Greek font equivalent</font>
+00065 <font class="comment">//*****************************************************************************</font>
+00066 <font class="keywordtype">int</font> ParsebGreek (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sResult,
+00067 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *sGreekText, <font class="keywordtype">int</font> nMaxResultBuflen);
+00068
+00069 <font class="comment">//*****************************************************************************</font>
+00070 <font class="comment">// Convert a unsigned character to a GREEK font unsigned character</font>
+00071 <font class="comment">//*****************************************************************************</font>
+00072 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> char2Font (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> letter, <font class="comment">// bGreek letter to convert to Font letter</font>
+00073 <font class="keywordtype">bool</font> finalSigma, <font class="comment">// Is it a final SIGMA</font>
+00074 <font class="keywordtype">bool</font> iota, <font class="comment">// TRUE = IOTA subscript; FALSE = No IOTA</font>
+00075 <font class="keywordtype">bool</font> breathing, <font class="comment">// TRUE = add breathing; FALSE = no breathing</font>
+00076 <font class="keywordtype">bool</font> rough); <font class="comment">// TRUE = rough breathing; False = smooth</font>
+00077
+00078 <font class="comment">//*****************************************************************************</font>
+00079 <font class="comment">// Convert a GREEK font unsigned character to a unsigned character</font>
+00080 <font class="comment">//*****************************************************************************</font>
+00081 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Font2char (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> letter, <font class="comment">// bGreek letter to convert to Font letter</font>
+00082 <font class="keywordtype">bool</font> &amp; iota, <font class="comment">// TRUE = IOTA subscript; FALSE = No IOTA</font>
+00083 <font class="keywordtype">bool</font> &amp; breathing, <font class="comment">// TRUE = add breathing; FALSE = no breathing</font>
+00084 <font class="keywordtype">bool</font> &amp; rough); <font class="comment">// TRUE = rough breathing; False = smooth</font>
+00085
+00086
+00087 <font class="comment">//*****************************************************************************</font>
+00088 <font class="comment">// Identify and return a bGreek letter from a special font char</font>
+00089 <font class="comment">//*****************************************************************************</font>
+00090 <font class="keywordtype">bool</font> getSpecialChar (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Font, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> &amp;letter);
+00091
+00092 <font class="comment">//*****************************************************************************</font>
+00093 <font class="comment">// true if the font character is a special character; false it isn't</font>
+00094 <font class="comment">//*****************************************************************************</font>
+00095 <font class="keywordtype">bool</font> SpecialGreek (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Font);
+00096
+00097 <font class="comment">//*****************************************************************************</font>
+00098 <font class="comment">// Return Greek font puntuation from bGreek punstuation</font>
+00099 <font class="comment">//*****************************************************************************</font>
+00100 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> getGreekPunct (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> bGreek);
+00101
+00102 <font class="comment">//*****************************************************************************</font>
+00103 <font class="comment">// Return bGreek puntuation from Greek font punstuation</font>
+00104 <font class="comment">//*****************************************************************************</font>
+00105 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> getbGreekPunct (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Greek);
+00106
+00107 <font class="comment">//*****************************************************************************</font>
+00108 <font class="comment">// Is the character punctuation or a space: true it is, false it isn't</font>
+00109 <font class="comment">//*****************************************************************************</font>
+00110 <font class="keywordtype">bool</font> isPunctSpace (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> c);
+00111
+00112
+00113
+00114 <font class="preprocessor">#endif // __GREEK2GREEK</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/_greek_chars_8h-source.html b/doc/api-documentation/html/_greek_chars_8h-source.html
new file mode 100644
index 0000000..8bf35f7
--- /dev/null
+++ b/doc/api-documentation/html/_greek_chars_8h-source.html
@@ -0,0 +1,163 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GreekChars.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GreekChars.h</h1><div class="fragment"><pre>00001 <font class="comment">//*****************************************************************************</font>
+00002 <font class="comment">// Author : William Dicks ***</font>
+00003 <font class="comment">// Date Created: 10 February 1998 ***</font>
+00004 <font class="comment">// Purpose : Enumeration for Greek to b-Greek conversion and vice ***</font>
+00005 <font class="comment">// : versa. ***</font>
+00006 <font class="comment">// File Name : GreekChars.h ***</font>
+00007 <font class="comment">// ***</font>
+00008 <font class="comment">// Author info : ---------------------------------------------------------- ***</font>
+00009 <font class="comment">// Address : 23 Tieroogpark ***</font>
+00010 <font class="comment">// : Hoewe Str ***</font>
+00011 <font class="comment">// : Elarduspark X3 ***</font>
+00012 <font class="comment">// : 0181 ***</font>
+00013 <font class="comment">// : South Africa ***</font>
+00014 <font class="comment">// Home Tel: +27 (0)12 345 3166 ***</font>
+00015 <font class="comment">// Cell No : +27 (0)82 577 4424 ***</font>
+00016 <font class="comment">// e-mail : wd@isis.co.za ***</font>
+00017 <font class="comment">// Church WWW : http://www.hatfield.co.za ***</font>
+00018 <font class="comment">//*****************************************************************************</font>
+00019 <font class="comment">/*</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> * $Id: _greek_chars_8h-source.html,v 1.7 2002/06/20 20:23:07 mgruner Exp $</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00024 <font class="comment"> * CrossWire Bible Society</font>
+00025 <font class="comment"> * P. O. Box 2528</font>
+00026 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00027 <font class="comment"> *</font>
+00028 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00029 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00030 <font class="comment"> * Free Software Foundation version 2.</font>
+00031 <font class="comment"> *</font>
+00032 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00033 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00034 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00035 <font class="comment"> * General Public License for more details.</font>
+00036 <font class="comment"> *</font>
+00037 <font class="comment"> */</font>
+00038
+00039 <font class="preprocessor">#ifndef __GREEKCHARS_H</font>
+00040 <font class="preprocessor"></font><font class="preprocessor">#define __GREEKCHARS_H</font>
+00041 <font class="preprocessor"></font>
+00042 <font class="comment">// This enum represents the values of the characters used for the </font>
+00043 <font class="comment">// transliteration as used on the b-greek discussion list.</font>
+00044
+00045 <font class="keyword">enum</font> bGreekChars
+00046 {
+00047 ALPHA = 65, <font class="comment">// A</font>
+00048 BETA, <font class="comment">// B</font>
+00049 CHI, <font class="comment">// C</font>
+00050 DELTA, <font class="comment">// D</font>
+00051 EPSILON, <font class="comment">// E</font>
+00052 PHI, <font class="comment">// F</font>
+00053 GAMMA, <font class="comment">// G</font>
+00054 ETA, <font class="comment">// H</font>
+00055 IOTA, <font class="comment">// I</font>
+00056 <font class="comment">// No J</font>
+00057 KAPPA = 75, <font class="comment">// K</font>
+00058 LAMBDA, <font class="comment">// L</font>
+00059 MU, <font class="comment">// M</font>
+00060 NU, <font class="comment">// N</font>
+00061 OMICRON, <font class="comment">// O</font>
+00062 PI, <font class="comment">// P</font>
+00063 THETA, <font class="comment">// Q</font>
+00064 RHO, <font class="comment">// R</font>
+00065 SIGMA, <font class="comment">// S</font>
+00066 TAU, <font class="comment">// T</font>
+00067 UPSILON, <font class="comment">// U</font>
+00068 <font class="comment">// No V</font>
+00069 OMEGA = <font class="charliteral">'W'</font>, <font class="comment">// W</font>
+00070 XI, <font class="comment">// X</font>
+00071 PSI, <font class="comment">// Y</font>
+00072 ZETA, <font class="comment">// Z</font>
+00073 ROUGH = 104, <font class="comment">// h</font>
+00074 IOTA_SUB <font class="comment">// i</font>
+00075 };
+00076
+00077 <font class="comment">// This enum represents the values of the characters ib the Greek.ttf font,</font>
+00078 <font class="comment">// and the comments on the right are the corresponding bGreek equivalents.</font>
+00079
+00080 <font class="keyword">enum</font> GreekFontChars
+00081 {
+00082 gALPHA = <font class="charliteral">'a'</font>, <font class="comment">// A</font>
+00083 gBETA, <font class="comment">// B</font>
+00084 gCHI, <font class="comment">// C</font>
+00085 gDELTA, <font class="comment">// D</font>
+00086 gEPSILON, <font class="comment">// E</font>
+00087 gPHI, <font class="comment">// F</font>
+00088 gGAMMA, <font class="comment">// G</font>
+00089 gETA, <font class="comment">// H</font>
+00090 gIOTA, <font class="comment">// I</font>
+00091 gSIGMA_END, <font class="comment">// j</font>
+00092 gKAPPA, <font class="comment">// K</font>
+00093 gLAMBDA, <font class="comment">// L</font>
+00094 gMU, <font class="comment">// M</font>
+00095 gNU, <font class="comment">// N</font>
+00096 gOMICRON, <font class="comment">// O</font>
+00097 gPI, <font class="comment">// P</font>
+00098 gTHETA, <font class="comment">// Q</font>
+00099 gRHO, <font class="comment">// R</font>
+00100 gSIGMA, <font class="comment">// S</font>
+00101 gTAU, <font class="comment">// T</font>
+00102 gUPSILON, <font class="comment">// U</font>
+00103 <font class="comment">// No V</font>
+00104 gOMEGA = <font class="charliteral">'w'</font>, <font class="comment">// W</font>
+00105 gXI, <font class="comment">// X</font>
+00106 gPSI, <font class="comment">// Y</font>
+00107 gZETA, <font class="comment">// Z</font>
+00108 gROUGH_ALPHA = 161, <font class="comment">// hA</font>
+00109 gROUGH_EPSILON = 152, <font class="comment">// hE</font>
+00110 gROUGH_ETA = 185, <font class="comment">// hH</font>
+00111 gROUGH_IOTA = 131, <font class="comment">// hH</font>
+00112 gROUGH_OMICRON = 208, <font class="comment">// hH</font>
+00113 gROUGH_RHO = 183, <font class="comment">// hR</font>
+00114 gROUGH_UPSILON = 216, <font class="comment">// hU</font>
+00115 gROUGH_OMEGA = 230, <font class="comment">// hW</font>
+00116 gIOTA_ALPHA = <font class="charliteral">'v'</font>, <font class="comment">// Ai</font>
+00117 gIOTA_ETA = <font class="charliteral">'V'</font>, <font class="comment">// Ei</font>
+00118 gIOTA_OMEGA = <font class="charliteral">'J'</font>, <font class="comment">// Wi</font>
+00119 gNON_ROUGH_ALPHA = 162, <font class="comment">// hA</font>
+00120 gNON_ROUGH_EPSILON = 153, <font class="comment">// hE</font>
+00121 gNON_ROUGH_ETA = 186, <font class="comment">// hH</font>
+00122 gNON_ROUGH_IOTA = 132, <font class="comment">// hH</font>
+00123 gNON_ROUGH_OMICRON = 209, <font class="comment">// hH</font>
+00124 gNON_ROUGH_RHO = 184, <font class="comment">// hR</font>
+00125 gNON_ROUGH_UPSILON = 217, <font class="comment">// hU</font>
+00126 gNON_ROUGH_OMEGA = 231 <font class="comment">// hW</font>
+00127 };
+00128
+00129 <font class="comment">// English puntuation as used on bGreek</font>
+00130
+00131 <font class="keyword">enum</font> bGreekPunct
+00132 {
+00133 COMMA = <font class="charliteral">','</font>,
+00134 STOP = <font class="charliteral">'.'</font>,
+00135 SEMI_COLON = <font class="charliteral">';'</font>,
+00136 QUESTION = <font class="charliteral">'?'</font>
+00137 };
+00138
+00139 <font class="comment">// English puntuation as used in the Greek font</font>
+00140
+00141 <font class="keyword">enum</font> GreekPunct
+00142 {
+00143 gCOMMA = <font class="charliteral">','</font>,
+00144 gSTOP = <font class="charliteral">'.'</font>,
+00145 gSEMI_COLON = <font class="charliteral">':'</font>,
+00146 gQUESTION = <font class="charliteral">';'</font>
+00147 };
+00148
+00149 <font class="preprocessor">#endif // __GREEKCHARS_H</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/annotated.html b/doc/api-documentation/html/annotated.html
new file mode 100644
index 0000000..9616ef2
--- /dev/null
+++ b/doc/api-documentation/html/annotated.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Annotated Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project Compound List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td class="indexvalue">This class is like a normal <a class="el" href="class_s_w_mgr.html">SWMgr</a>, but you can additonally specify which encoding you want to use</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td class="indexvalue">This Filter shows/hides footnotes in a GBF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td class="indexvalue">This Filter shows/hides headings in a GBF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a></td><td class="indexvalue">This filter converts GBF Text into HTML</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a></td><td class="indexvalue">This filter converts GBF text to HTML text with hrefs</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td class="indexvalue">This Filter shows/hides morph tags in a GBF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a></td><td class="indexvalue">This filter converts GBF text to HTML text with hrefs</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_plain.html">GBFPlain</a></td><td class="indexvalue">This filter converts GBF text into plain text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a></td><td class="indexvalue">This filter converts GBF text into RTF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td class="indexvalue">This Filter shows/hides strong's numbers in a GBF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a></td><td class="indexvalue">This filter converts GBF text into ThML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a></td><td class="indexvalue">This filter converts ThML text to plain text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a></td><td class="indexvalue">This filter converts Latin-1 encoded text to UTF-8</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a></td><td class="indexvalue">This filter converts Latin-1 encoded text to UTF-8</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_list_key.html">ListKey</a></td><td class="indexvalue">ListKey is the basis for all types of keys that have lists of specified indexes (e.g</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td class="indexvalue">Handles all the different locales of Sword</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td class="indexvalue">This class is like a normal SWEncodingMgr, but you can additonally specify which markup you want to use</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td class="indexvalue">Shows or hides footnotes in plain text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a></td><td class="indexvalue">This filter converts plain text to HTML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a></td><td class="indexvalue">This filter converts RTF text into HTML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a></td><td class="indexvalue">This filter converts RWP text to HTML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a></td><td class="indexvalue">This filter converts RWP text to RTF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a></td><td class="indexvalue">This filter converts SCSU compressed (encoded) text to UTF-8</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_str_key.html">StrKey</a></td><td class="indexvalue">A standard string key class (used for modules that index on single strings (eg</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td class="indexvalue">A filter providing commonly used functionality</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_class.html">SWClass</a></td><td class="indexvalue">Class used for SWDYNAMIC_CAST to save the inheritance order</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_com.html">SWCom</a></td><td class="indexvalue">The basis for all commentary modules</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_config.html">SWConfig</a></td><td class="indexvalue">The class to read and save settings using a file on disk</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_display.html">SWDisplay</a></td><td class="indexvalue">Swdisp is the basis for all types of displays (e.g</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_gen_book.html">SWGenBook</a></td><td class="indexvalue">The basis for all types of Lexicon and Dictionary modules (hence the 'LD')</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td class="indexvalue">Title: Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_key.html">SWKey</a></td><td class="indexvalue">SWKey is the basis for all types of keys for indexing into modules (e.g</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_l_d.html">SWLD</a></td><td class="indexvalue">The basis for all types of Lexicon and Dictionary modules (hence the 'LD')</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td class="indexvalue">SWLocale is used for the localisation of the booknames The SWLocale is a class which holds the information of one language</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td class="indexvalue">SWMgr is the main class of the Sword library</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_module.html">SWModule</a></td><td class="indexvalue">The class SWModule is the base class for all modules used in Sword</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_object.html">SWObject</a></td><td class="indexvalue">Base class for major Sword classes</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_s_w_text.html">SWText</a></td><td class="indexvalue">The basis for all text modules</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td class="indexvalue">This Filter shows/hides footnotes in a ThML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a></td><td class="indexvalue">This filter converts ThML text to GBF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td class="indexvalue">This Filter shows/hides headings in a ThML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a></td><td class="indexvalue">This filter converts ThML text to HTML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a></td><td class="indexvalue">This filter converts ThML text to HTML text with hrefs</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td class="indexvalue">This Filter shows/hides lemmas in a ThML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td class="indexvalue">This Filter shows/hides morph tags in a ThML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a></td><td class="indexvalue">This filter converts ThML text to OLB text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a></td><td class="indexvalue">This filter converts ThML text to HTML text with hrefs</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_plain.html">ThMLPlain</a></td><td class="indexvalue">This filter converts ThML text to plain text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_r_t_f.html">ThMLRTF</a></td><td class="indexvalue">This filter converts ThML text to RTF text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td class="indexvalue">This Filter shows/hides scripture references in a ThML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td class="indexvalue">This Filter shows/hides strong's numbers in a ThML text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td class="indexvalue">This Filter shows/hides textual variants</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_tree_key.html">TreeKey</a></td><td class="indexvalue">Class <a class="el" href="class_verse_key.html">VerseKey</a> The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td class="indexvalue">Class <a class="el" href="class_verse_key.html">VerseKey</a> The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a></td><td class="indexvalue">This filter converts UTF-8 text into RTF Unicode tags</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a></td><td class="indexvalue">This filter converts UTF-16 encoded text to UTF-8</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td class="indexvalue">This Filter shows/hides Hebrew cantillation marks in UTF8 text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td class="indexvalue">This Filter shows/hides Greek Accents marks in UTF8 text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td class="indexvalue">This Filter shows/hides Hebrew vowel points in UTF8 text</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a></td><td class="indexvalue">This filter converts UTF-8 text into HTML escape sequences</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a></td><td class="indexvalue">This filter converts UTF-8 encoded text to Latin-1</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a></td><td class="indexvalue">This filter converts UTF-8 encoded text to UTF-16</td></tr>
+ <tr><td class="indexkey"><a class="el" href="class_verse_key.html">VerseKey</a></td><td class="indexvalue">Class VerseKey The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries</td></tr>
+</table>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/cipherfil_8cpp-source.html b/doc/api-documentation/html/cipherfil_8cpp-source.html
new file mode 100644
index 0000000..a487514
--- /dev/null
+++ b/doc/api-documentation/html/cipherfil_8cpp-source.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>cipherfil.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>cipherfil.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * cipherfil - SWFilter decendant to decipher a module</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;cipherfil.h&gt;</font>
+00010
+00011
+00012 CipherFilter::CipherFilter(<font class="keyword">const</font> <font class="keywordtype">char</font> *key) {
+00013 cipher = <font class="keyword">new</font> SWCipher((<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)key);
+00014 }
+00015
+00016
+00017 CipherFilter::~CipherFilter() {
+00018 <font class="keyword">delete</font> cipher;
+00019 }
+00020
+00021
+00022 SWCipher *CipherFilter::getCipher() {
+00023 <font class="keywordflow">return</font> cipher;
+00024 }
+00025
+00026
+00027 <font class="keywordtype">char</font> CipherFilter::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module) {
+00028 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> len;
+00029 <font class="comment">// len = strlen(text);</font>
+00030 len = maxlen;
+00031 <font class="keywordflow">if</font> (len &gt; 0) {
+00032 cipher-&gt;cipherBuf(&amp;len, text);
+00033 strncpy(text, cipher-&gt;Buf(), (len &lt; (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font>)maxlen) ? len : maxlen);
+00034 }
+00035 text[maxlen] = 0;
+00036 text[maxlen+1] = 0;
+00037 <font class="keywordflow">return</font> 0;
+00038 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/cipherfil_8h-source.html b/doc/api-documentation/html/cipherfil_8h-source.html
new file mode 100644
index 0000000..ecaf1d3
--- /dev/null
+++ b/doc/api-documentation/html/cipherfil_8h-source.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>cipherfil.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>cipherfil.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: cipherfil_8h-source.html,v 1.7 2002/06/20 20:23:07 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef CIPHERFIL_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define CIPHERFIL_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;swcipher.h&gt;</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+00029 <font class="keyword">class </font>SWDLLEXPORT CipherFilter:<font class="keyword">public</font> SWFilter
+00030 {
+00031 SWCipher *cipher;
+00032 <font class="keyword">public</font>:
+00033 CipherFilter (<font class="keyword">const</font> <font class="keywordtype">char</font> *key);
+00034 <font class="keyword">virtual</font> ~ CipherFilter ();
+00035 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00036 <font class="keyword">virtual</font> SWCipher *getCipher ();
+00037 };
+00038
+00039 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_encoding_filter_mgr-members.html b/doc/api-documentation/html/class_encoding_filter_mgr-members.html
new file mode 100644
index 0000000..2c709a0
--- /dev/null
+++ b/doc/api-documentation/html/class_encoding_filter_mgr-members.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>EncodingFilterMgr Member List</h1>This is the complete list of members for <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a4">AddEncodingFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddGlobalOptions</b>(SWModule *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddLocalOptions</b>(SWModule *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a3">AddRawFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddRenderFilters</b>(SWModule *module, ConfigEntMap &amp;section) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddStripFilters</b>(SWModule *module, ConfigEntMap &amp;section) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>encoding</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a2">Encoding</a>(char enc)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a0">EncodingFilterMgr</a>(char encoding=ENC_UTF8)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getParentMgr</b>() (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>latin1utf8</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>scsuutf8</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setParentMgr</b>(SWMgr *parentMgr) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWFilterMgr</b>() (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>targetenc</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a1">~EncodingFilterMgr</a>()</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilterMgr</b>() (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_encoding_filter_mgr.html b/doc/api-documentation/html/class_encoding_filter_mgr.html
new file mode 100644
index 0000000..ff67b7f
--- /dev/null
+++ b/doc/api-documentation/html/class_encoding_filter_mgr.html
@@ -0,0 +1,338 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>EncodingFilterMgr class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>EncodingFilterMgr Class Reference</h1>This class is like a normal <a class="el" href="class_s_w_mgr.html">SWMgr</a>, but you can additonally specify which encoding you want to use.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="encfiltmgr_8h-source.html">encfiltmgr.h</a>&gt;</code>
+<p>
+Inheritance diagram for EncodingFilterMgr:<p><center><img src="class_encoding_filter_mgr__inherit__graph.png" border="0" usemap="#_encoding_filter_mgr__inherit__map" alt="Inheritance graph"></center>
+<map name="_encoding_filter_mgr__inherit__map">
+<area href="class_markup_filter_mgr.html" shape="rect" coords="18,84,127,103" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_encoding_filter_mgr-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_encoding_filter_mgr.html#a0">EncodingFilterMgr</a> (char encoding=ENC_UTF8)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Constructor of SWEncodingMgr.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="EncodingFilterMgr::~EncodingFilterMgr"></a>
+&nbsp;</td><td valign=bottom><a class="el" href="class_encoding_filter_mgr.html#a1">~EncodingFilterMgr</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The destructor of SWEncodingMgr.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="class_encoding_filter_mgr.html#a2">Encoding</a> (char enc)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Markup sets/gets the encoding after initialization.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_encoding_filter_mgr.html#a3">AddRawFilters</a> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds the raw filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_encoding_filter_mgr.html#a4">AddEncodingFilters</a> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds the encoding filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="EncodingFilterMgr::latin1utf8"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>latin1utf8</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n1" doxytag="EncodingFilterMgr::scsuutf8"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>scsuutf8</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n2" doxytag="EncodingFilterMgr::targetenc"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>targetenc</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n3" doxytag="EncodingFilterMgr::encoding"></a>
+char&nbsp;</td><td valign=bottom><b>encoding</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This class is like a normal <a class="el" href="class_s_w_mgr.html">SWMgr</a>, but you can additonally specify which encoding you want to use.
+<p>
+
+<p>
+Definition at line <a class="el" href="encfiltmgr_8h-source.html#l00033">33</a> of file <a class="el" href="encfiltmgr_8h-source.html">encfiltmgr.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="EncodingFilterMgr::EncodingFilterMgr"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> EncodingFilterMgr::EncodingFilterMgr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>encoding</em> = ENC_UTF8 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor of SWEncodingMgr.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>iconfig</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>isysconfig</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>autoload</em>&nbsp;</td><td>
+If this bool is true the constructor starts loading the installed modules. If you reimplemented <a class="el" href="class_s_w_mgr.html">SWMgr</a> you can set autoload=false to load the modules with your own reimplemented function. </td></tr>
+<tr><td valign=top><em>encoding</em>&nbsp;</td><td>
+The desired encoding. </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="encfiltmgr_8cpp-source.html#l00041">41</a> of file <a class="el" href="encfiltmgr_8cpp-source.html">encfiltmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00042 : SWFilterMgr() {
+00043
+00044 scsuutf8 = <font class="keyword">new</font> <a class="code" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>();
+00045 latin1utf8 = <font class="keyword">new</font> <a class="code" href="class_latin1_u_t_f8.html">Latin1UTF8</a>();
+00046
+00047 encoding = enc;
+00048
+00049 <font class="keywordflow">switch</font> (encoding) {
+00050 <font class="keywordflow">case</font> ENC_LATIN1:
+00051 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_latin1.html">UTF8Latin1</a>();
+00052 <font class="keywordflow">break</font>;
+00053 <font class="keywordflow">case</font> ENC_UTF16:
+00054 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>();
+00055 <font class="keywordflow">break</font>;
+00056 <font class="keywordflow">case</font> ENC_RTF:
+00057 targetenc = <font class="keyword">new</font> <a class="code" href="class_unicode_r_t_f.html">UnicodeRTF</a>();
+00058 <font class="keywordflow">break</font>;
+00059 <font class="keywordflow">case</font> ENC_HTML:
+00060 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>();
+00061 <font class="keywordflow">break</font>;
+00062 <font class="keywordflow">default</font>: <font class="comment">// i.e. case ENC_UTF8</font>
+00063 targetenc = NULL;
+00064 }
+00065 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a4" doxytag="EncodingFilterMgr::AddEncodingFilters"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void EncodingFilterMgr::AddEncodingFilters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>module</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>ConfigEntMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>section</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds the encoding filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>module</em>&nbsp;</td><td>
+To this module the encoding filter(s) are added </td></tr>
+<tr><td valign=top><em>section</em>&nbsp;</td><td>
+We use this section to get a list of filters we should apply to the module </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="encfiltmgr_8cpp-source.html#l00092">92</a> of file <a class="el" href="encfiltmgr_8cpp-source.html">encfiltmgr.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00451">SWModule::AddEncodingFilter</a>().
+<p>
+<div class="fragment"><pre>00092 {
+00093 <font class="keywordflow">if</font> (targetenc)
+00094 module-&gt;<a class="code" href="class_s_w_module.html#a45">AddEncodingFilter</a>(targetenc);
+00095 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a3" doxytag="EncodingFilterMgr::AddRawFilters"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void EncodingFilterMgr::AddRawFilters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>module</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>ConfigEntMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>section</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds the raw filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>module</em>&nbsp;</td><td>
+To this module the raw filter(s) are added </td></tr>
+<tr><td valign=top><em>section</em>&nbsp;</td><td>
+We use this section to get a list of filters we should apply to the module </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="encfiltmgr_8cpp-source.html#l00079">79</a> of file <a class="el" href="encfiltmgr_8cpp-source.html">encfiltmgr.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00505">SWModule::AddRawFilter</a>().
+<p>
+<div class="fragment"><pre>00079 {
+00080
+00081 ConfigEntMap::iterator entry;
+00082
+00083 string encoding = ((entry = section.find(<font class="stringliteral">"Encoding"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00084 <font class="keywordflow">if</font> (encoding.empty() || !stricmp(encoding.c_str(), <font class="stringliteral">"Latin-1"</font>)) {
+00085 module-&gt;<a class="code" href="class_s_w_module.html#a51">AddRawFilter</a>(latin1utf8);
+00086 }
+00087 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(encoding.c_str(), <font class="stringliteral">"SCSU"</font>)) {
+00088 module-&gt;<a class="code" href="class_s_w_module.html#a51">AddRawFilter</a>(scsuutf8);
+00089 }
+00090 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a2" doxytag="EncodingFilterMgr::Encoding"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char EncodingFilterMgr::Encoding </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>enc</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Markup sets/gets the encoding after initialization.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>m</em>&nbsp;</td><td>
+The new encoding or ENC_UNKNOWN if you just want to get the current markup. </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+The current (possibly changed) encoding format. </dl>
+<p>
+Definition at line <a class="el" href="encfiltmgr_8cpp-source.html#l00104">104</a> of file <a class="el" href="encfiltmgr_8cpp-source.html">encfiltmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00104 {
+00105 <font class="keywordflow">if</font> (enc &amp;&amp; enc != encoding) {
+00106 encoding = enc;
+00107 SWFilter * oldfilter = targetenc;
+00108
+00109 <font class="keywordflow">switch</font> (encoding) {
+00110 <font class="keywordflow">case</font> ENC_LATIN1:
+00111 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_latin1.html">UTF8Latin1</a>();
+00112 <font class="keywordflow">break</font>;
+00113 <font class="keywordflow">case</font> ENC_UTF16:
+00114 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>();
+00115 <font class="keywordflow">break</font>;
+00116 <font class="keywordflow">case</font> ENC_RTF:
+00117 targetenc = <font class="keyword">new</font> <a class="code" href="class_unicode_r_t_f.html">UnicodeRTF</a>();
+00118 <font class="keywordflow">break</font>;
+00119 <font class="keywordflow">case</font> ENC_HTML:
+00120 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>();
+00121 <font class="keywordflow">break</font>;
+00122 <font class="keywordflow">default</font>: <font class="comment">// i.e. case ENC_UTF8</font>
+00123 targetenc = NULL;
+00124 }
+00125
+00126 ModMap::const_iterator module;
+00127
+00128 <font class="keywordflow">if</font> (oldfilter != targetenc) {
+00129 <font class="keywordflow">if</font> (oldfilter) {
+00130 <font class="keywordflow">if</font> (!targetenc) {
+00131 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00132 module-&gt;second-&gt;RemoveRenderFilter(oldfilter);
+00133 }
+00134 <font class="keywordflow">else</font> {
+00135 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00136 module-&gt;second-&gt;ReplaceRenderFilter(oldfilter, targetenc);
+00137 }
+00138 <font class="keyword">delete</font> oldfilter;
+00139 }
+00140 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (targetenc) {
+00141 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00142 module-&gt;second-&gt;AddRenderFilter(targetenc);
+00143 }
+00144 }
+00145
+00146 }
+00147 <font class="keywordflow">return</font> encoding;
+00148 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="encfiltmgr_8h-source.html">encfiltmgr.h</a><li><a class="el" href="encfiltmgr_8cpp-source.html">encfiltmgr.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_encoding_filter_mgr__inherit__graph.png b/doc/api-documentation/html/class_encoding_filter_mgr__inherit__graph.png
new file mode 100644
index 0000000..e498f15
--- /dev/null
+++ b/doc/api-documentation/html/class_encoding_filter_mgr__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_g_b_f_footnotes-members.html b/doc/api-documentation/html/class_g_b_f_footnotes-members.html
new file mode 100644
index 0000000..dacecbd
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_footnotes-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFFootnotes Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFFootnotes</b>() (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~GBFFootnotes</b>() (defined in <a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>)</td><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_footnotes.html b/doc/api-documentation/html/class_g_b_f_footnotes.html
new file mode 100644
index 0000000..c42dcbf
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_footnotes.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFFootnotes class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFFootnotes Class Reference</h1>This Filter shows/hides footnotes in a GBF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbffootnotes_8h-source.html">gbffootnotes.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_footnotes-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFFootnotes::GBFFootnotes"></a>
+&nbsp;</td><td valign=bottom><b>GBFFootnotes</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFFootnotes::~GBFFootnotes"></a>
+virtual&nbsp;</td><td valign=bottom><b>~GBFFootnotes</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="GBFFootnotes::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="GBFFootnotes::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="GBFFootnotes::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="GBFFootnotes::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="GBFFootnotes::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="GBFFootnotes::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="GBFFootnotes::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="GBFFootnotes::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="GBFFootnotes::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="GBFFootnotes::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="GBFFootnotes::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Footnotes"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="GBFFootnotes::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Footnotes On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides footnotes in a GBF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbffootnotes_8h-source.html#l00030">30</a> of file <a class="el" href="gbffootnotes_8h-source.html">gbffootnotes.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbffootnotes_8h-source.html">gbffootnotes.h</a><li><a class="el" href="gbffootnotes_8cpp-source.html">gbffootnotes.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_h_t_m_l-members.html b/doc/api-documentation/html/class_g_b_f_h_t_m_l-members.html
new file mode 100644
index 0000000..f5e7109
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_h_t_m_l-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFHTML Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFHTML</b>() (defined in <a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a>)</td><td><a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a>)</td><td><a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_h_t_m_l.html b/doc/api-documentation/html/class_g_b_f_h_t_m_l.html
new file mode 100644
index 0000000..9676d97
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_h_t_m_l.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFHTML class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFHTML Class Reference</h1>This filter converts GBF Text into HTML.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfhtml_8h-source.html">gbfhtml.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_h_t_m_l-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFHTML::GBFHTML"></a>
+&nbsp;</td><td valign=bottom><b>GBFHTML</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFHTML::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts GBF Text into HTML.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfhtml_8h-source.html#l00031">31</a> of file <a class="el" href="gbfhtml_8h-source.html">gbfhtml.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfhtml_8h-source.html">gbfhtml.h</a><li><a class="el" href="gbfhtml_8cpp-source.html">gbfhtml.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f-members.html b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f-members.html
new file mode 100644
index 0000000..7f00011
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f-members.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFHTMLHREF Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>addEscapeStringSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>addTokenSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>DualStringMap</b> typedef (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>GBFHTMLHREF</b>() (defined in <a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a>)</td><td><a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b14">handleEscapeString</a>(char **buf, const char *escString, DualStringMap &amp;userData)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">handleToken</a>(char **buf, const char *token, DualStringMap &amp;userData)</td><td><a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>key</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>module</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b12">pushString</a>(char **buf, const char *format,...)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resultBuffer</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b1">setEscapeEnd</a>(const char *escEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b0">setEscapeStart</a>(const char *escStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setEscapeStringCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b5">setPassThruUnknownEscapeString</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b4">setPassThruUnknownToken</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setTokenCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b3">setTokenEnd</a>(const char *tokenEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b2">setTokenStart</a>(const char *tokenStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteEscapeString</b>(char **buf, const char *escString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteToken</b>(char **buf, const char *token) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f.html b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f.html
new file mode 100644
index 0000000..f6b0d71
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f.html
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFHTMLHREF class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFHTMLHREF Class Reference</h1>this filter converts GBF text to HTML text with hrefs.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfhtmlhref_8h-source.html">gbfhtmlhref.h</a>&gt;</code>
+<p>
+Inheritance diagram for GBFHTMLHREF:<p><center><img src="class_g_b_f_h_t_m_l_h_r_e_f__inherit__graph.png" border="0" usemap="#_g_b_f_h_t_m_l_h_r_e_f__inherit__map" alt="Inheritance graph"></center>
+<map name="_g_b_f_h_t_m_l_h_r_e_f__inherit__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="19,15,115,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for GBFHTMLHREF:<p><center><img src="class_g_b_f_h_t_m_l_h_r_e_f__coll__graph.png" border="0" usemap="#_g_b_f_h_t_m_l_h_r_e_f__coll__map" alt="Collaboration graph"></center>
+<map name="_g_b_f_h_t_m_l_h_r_e_f__coll__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="206,481,302,500" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="150,196,206,215" alt="">
+<area href="class_s_w_module.html" shape="rect" coords="179,391,254,409" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,293,129,312" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="226,105,298,124" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="309,196,383,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="151,15,215,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_g_b_f_h_t_m_l_h_r_e_f-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFHTMLHREF::GBFHTMLHREF"></a>
+&nbsp;</td><td valign=bottom><b>GBFHTMLHREF</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">handleToken</a> (char **buf, const char *token, DualStringMap &amp;userData)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is called for every token encountered in the input text.</em> <a href="#b0">More...</a><em></em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts GBF text to HTML text with hrefs.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfhtmlhref_8h-source.html#l00026">26</a> of file <a class="el" href="gbfhtmlhref_8h-source.html">gbfhtmlhref.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="b0" doxytag="GBFHTMLHREF::handleToken"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool GBFHTMLHREF::handleToken </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>token</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>DualStringMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>userData</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is called for every token encountered in the input text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the output buffer (FIXME: what is its size?) </td></tr>
+<tr><td valign=top><em>token</em>&nbsp;</td><td>
+the token (e.g. <code>"p align='left'"</code> </td></tr>
+<tr><td valign=top><em>userData</em>&nbsp;</td><td>
+FIXME: document this </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+<code>false</code> if was not handled and should be handled in the default way (by just substituting). </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_basic_filter.html#b13">SWBasicFilter</a>.
+<p>
+Definition at line <a class="el" href="gbfhtmlhref_8cpp-source.html#l00060">60</a> of file <a class="el" href="gbfhtmlhref_8cpp-source.html">gbfhtmlhref.cpp</a>.
+<p>
+References <a class="el" href="swbasicfilter_8cpp-source.html#l00110">SWBasicFilter::pushString</a>().
+<p>
+<div class="fragment"><pre>00060 {
+00061 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok;
+00062
+00063 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00064 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WG"</font>, 2) || !strncmp(token, <font class="stringliteral">"WH"</font>, 2)) { <font class="comment">// strong's numbers</font>
+00065 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;em&gt;&amp;lt;&lt;a href=\"#"</font>);
+00066 <font class="keywordflow">for</font> (tok = token+1; *tok; tok++)
+00067 <font class="comment">//if(token[i] != '\"')</font>
+00068 *(*buf)++ = *tok;
+00069 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00070 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00071 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00072 <font class="comment">//if(token[i] != '\"')</font>
+00073 *(*buf)++ = *tok;
+00074 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;&amp;gt;&lt;/em&gt;&lt;/small&gt;"</font>);
+00075 }
+00076
+00077 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WTG"</font>, 3) || !strncmp(token, <font class="stringliteral">"WTH"</font>, 3)) { <font class="comment">// strong's numbers tense</font>
+00078 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;em&gt;(&lt;A HREF=\"#"</font>);
+00079 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00080 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00081 *(*buf)++ = *tok;
+00082 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00083 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00084 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++)
+00085 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00086 *(*buf)++ = *tok;
+00087 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;)&lt;/em&gt;&lt;/small&gt;"</font>);
+00088 }
+00089
+00090 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WT"</font>, 2) &amp;&amp; strncmp(token, <font class="stringliteral">"WTH"</font>, 3) &amp;&amp; strncmp(token, <font class="stringliteral">"WTG"</font>, 3)) { <font class="comment">// morph tags</font>
+00091 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;em&gt;(&lt;a href=\"M"</font>);
+00092 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00093 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00094 *(*buf)++ = *tok;
+00095 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00096 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00097 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00098 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00099 *(*buf)++ = *tok;
+00100 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;)&lt;/em&gt;&lt;/small&gt;"</font>);
+00101 }
+00102
+00103 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RX"</font>, 2)) {
+00104 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00105 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++) {
+00106 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'&lt;'</font> &amp;&amp; *tok+1 != <font class="charliteral">'R'</font> &amp;&amp; *tok+2 != <font class="charliteral">'x'</font>) {
+00107 *(*buf)++ = *tok;
+00108 }
+00109 <font class="keywordflow">else</font> {
+00110 <font class="keywordflow">break</font>;
+00111 }
+00112 }
+00113 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00114 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00115 }
+00116
+00117 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RB"</font>, 2)) {
+00118 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;i&gt;"</font>);
+00119 userData[<font class="stringliteral">"hasFootnotePreTag"</font>] = <font class="stringliteral">"true"</font>;
+00120 }
+00121
+00122 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RF"</font>, 2)) {
+00123 <font class="keywordflow">if</font>(userData[<font class="stringliteral">"hasFootnotePreTag"</font>] == <font class="stringliteral">"true"</font>) {
+00124 userData[<font class="stringliteral">"hasFootnotePreTag"</font>] = <font class="stringliteral">"false"</font>;
+00125 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/i&gt; "</font>);
+00126 }
+00127 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;font color=\"#800000\"&gt;&lt;small&gt; ("</font>);
+00128 }
+00129
+00130 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"FN"</font>, 2)) {
+00131 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;font face=\""</font>);
+00132 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00133 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00134 *(*buf)++ = *tok;
+00135 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00136 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00137 }
+00138
+00139 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"CA"</font>, 2)) { <font class="comment">// ASCII value</font>
+00140 *(*buf)++ = (char)atoi(&amp;token[2]);
+00141 }
+00142
+00143 <font class="keywordflow">else</font> {
+00144 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00145 }
+00146 }
+00147 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00148 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfhtmlhref_8h-source.html">gbfhtmlhref.h</a><li><a class="el" href="gbfhtmlhref_8cpp-source.html">gbfhtmlhref.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__coll__graph.png b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__coll__graph.png
new file mode 100644
index 0000000..aae3e25
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__inherit__graph.png b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__inherit__graph.png
new file mode 100644
index 0000000..e90f642
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_h_t_m_l_h_r_e_f__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_g_b_f_headings-members.html b/doc/api-documentation/html/class_g_b_f_headings-members.html
new file mode 100644
index 0000000..3e1f831
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_headings-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFHeadings Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFHeadings</b>() (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~GBFHeadings</b>() (defined in <a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>)</td><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_headings.html b/doc/api-documentation/html/class_g_b_f_headings.html
new file mode 100644
index 0000000..c13d0a8
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_headings.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFHeadings class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFHeadings Class Reference</h1>This Filter shows/hides headings in a GBF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfheadings_8h-source.html">gbfheadings.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_headings-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFHeadings::GBFHeadings"></a>
+&nbsp;</td><td valign=bottom><b>GBFHeadings</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFHeadings::~GBFHeadings"></a>
+virtual&nbsp;</td><td valign=bottom><b>~GBFHeadings</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="GBFHeadings::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="GBFHeadings::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="GBFHeadings::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="GBFHeadings::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="GBFHeadings::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="GBFHeadings::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="GBFHeadings::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="GBFHeadings::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="GBFHeadings::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="GBFHeadings::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="GBFHeadings::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Headings"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="GBFHeadings::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Headings On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides headings in a GBF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfheadings_8h-source.html#l00030">30</a> of file <a class="el" href="gbfheadings_8h-source.html">gbfheadings.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfheadings_8h-source.html">gbfheadings.h</a><li><a class="el" href="gbfheadings_8cpp-source.html">gbfheadings.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_morph-members.html b/doc/api-documentation/html/class_g_b_f_morph-members.html
new file mode 100644
index 0000000..fef8e22
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_morph-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFMorph Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFMorph</b>() (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~GBFMorph</b>() (defined in <a class="el" href="class_g_b_f_morph.html">GBFMorph</a>)</td><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_morph.html b/doc/api-documentation/html/class_g_b_f_morph.html
new file mode 100644
index 0000000..5bca481
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_morph.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFMorph class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFMorph Class Reference</h1>This Filter shows/hides morph tags in a GBF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfmorph_8h-source.html">gbfmorph.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_morph-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFMorph::GBFMorph"></a>
+&nbsp;</td><td valign=bottom><b>GBFMorph</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFMorph::~GBFMorph"></a>
+virtual&nbsp;</td><td valign=bottom><b>~GBFMorph</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="GBFMorph::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="GBFMorph::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="GBFMorph::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="GBFMorph::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="GBFMorph::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="GBFMorph::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="GBFMorph::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="GBFMorph::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="GBFMorph::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="GBFMorph::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="GBFMorph::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Morphological Tags"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="GBFMorph::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Morphological Tags On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides morph tags in a GBF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfmorph_8h-source.html#l00029">29</a> of file <a class="el" href="gbfmorph_8h-source.html">gbfmorph.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfmorph_8h-source.html">gbfmorph.h</a><li><a class="el" href="gbfmorph_8cpp-source.html">gbfmorph.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_o_s_i_s-members.html b/doc/api-documentation/html/class_g_b_f_o_s_i_s-members.html
new file mode 100644
index 0000000..ed16723
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_o_s_i_s-members.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFOSIS Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>convertToOSIS</b>(const char *, const SWKey *key) (defined in <a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>)</td><td><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>GBFOSIS</b>() (defined in <a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>)</td><td><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>)</td><td><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>pushString</b>(char **buf, const char *format,...) (defined in <a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>)</td><td><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~GBFOSIS</b>() (defined in <a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>)</td><td><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_o_s_i_s.html b/doc/api-documentation/html/class_g_b_f_o_s_i_s.html
new file mode 100644
index 0000000..cda9647
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_o_s_i_s.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFOSIS class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFOSIS Class Reference</h1>this filter converts GBF text to HTML text with hrefs.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfosis_8h-source.html">gbfosis.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_o_s_i_s-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFOSIS::GBFOSIS"></a>
+&nbsp;</td><td valign=bottom><b>GBFOSIS</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFOSIS::~GBFOSIS"></a>
+virtual&nbsp;</td><td valign=bottom><b>~GBFOSIS</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="GBFOSIS::ProcessText"></a>
+char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="b0" doxytag="GBFOSIS::convertToOSIS"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>convertToOSIS</b> (const char *, const <a class="el" href="class_s_w_key.html">SWKey</a> *key)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b1" doxytag="GBFOSIS::pushString"></a>
+void&nbsp;</td><td valign=bottom><b>pushString</b> (char **buf, const char *format,...)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts GBF text to HTML text with hrefs.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfosis_8h-source.html#l00025">25</a> of file <a class="el" href="gbfosis_8h-source.html">gbfosis.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfosis_8h-source.html">gbfosis.h</a><li><a class="el" href="gbfosis_8cpp-source.html">gbfosis.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_plain-members.html b/doc/api-documentation/html/class_g_b_f_plain-members.html
new file mode 100644
index 0000000..99f8b9e
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_plain-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFPlain Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_plain.html">GBFPlain</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFPlain</b>() (defined in <a class="el" href="class_g_b_f_plain.html">GBFPlain</a>)</td><td><a class="el" href="class_g_b_f_plain.html">GBFPlain</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_plain.html">GBFPlain</a>)</td><td><a class="el" href="class_g_b_f_plain.html">GBFPlain</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_plain.html b/doc/api-documentation/html/class_g_b_f_plain.html
new file mode 100644
index 0000000..57980ea
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_plain.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFPlain class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFPlain Class Reference</h1>This filter converts GBF text into plain text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfplain_8h-source.html">gbfplain.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_plain-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFPlain::GBFPlain"></a>
+&nbsp;</td><td valign=bottom><b>GBFPlain</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFPlain::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts GBF text into plain text.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfplain_8h-source.html#l00030">30</a> of file <a class="el" href="gbfplain_8h-source.html">gbfplain.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfplain_8h-source.html">gbfplain.h</a><li><a class="el" href="gbfplain_8cpp-source.html">gbfplain.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_r_t_f-members.html b/doc/api-documentation/html/class_g_b_f_r_t_f-members.html
new file mode 100644
index 0000000..2766aa8
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_r_t_f-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFRTF Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFRTF</b>() (defined in <a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a>)</td><td><a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a>)</td><td><a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_r_t_f.html b/doc/api-documentation/html/class_g_b_f_r_t_f.html
new file mode 100644
index 0000000..7941a32
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_r_t_f.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFRTF class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFRTF Class Reference</h1>This filter converts GBF text into RTF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfrtf_8h-source.html">gbfrtf.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_r_t_f-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFRTF::GBFRTF"></a>
+&nbsp;</td><td valign=bottom><b>GBFRTF</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFRTF::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts GBF text into RTF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfrtf_8h-source.html#l00030">30</a> of file <a class="el" href="gbfrtf_8h-source.html">gbfrtf.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfrtf_8h-source.html">gbfrtf.h</a><li><a class="el" href="gbfrtf_8cpp-source.html">gbfrtf.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_strongs-members.html b/doc/api-documentation/html/class_g_b_f_strongs-members.html
new file mode 100644
index 0000000..04e81d9
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_strongs-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFStrongs Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFStrongs</b>() (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~GBFStrongs</b>() (defined in <a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>)</td><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_strongs.html b/doc/api-documentation/html/class_g_b_f_strongs.html
new file mode 100644
index 0000000..de7e820
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_strongs.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFStrongs class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFStrongs Class Reference</h1>This Filter shows/hides strong's numbers in a GBF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfstrongs_8h-source.html">gbfstrongs.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_strongs-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFStrongs::GBFStrongs"></a>
+&nbsp;</td><td valign=bottom><b>GBFStrongs</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFStrongs::~GBFStrongs"></a>
+virtual&nbsp;</td><td valign=bottom><b>~GBFStrongs</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="GBFStrongs::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="GBFStrongs::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="GBFStrongs::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="GBFStrongs::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="GBFStrongs::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="GBFStrongs::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="GBFStrongs::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="GBFStrongs::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="GBFStrongs::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="GBFStrongs::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="GBFStrongs::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Strong's Numbers"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="GBFStrongs::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Strong's Numbers On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides strong's numbers in a GBF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfstrongs_8h-source.html#l00030">30</a> of file <a class="el" href="gbfstrongs_8h-source.html">gbfstrongs.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfstrongs_8h-source.html">gbfstrongs.h</a><li><a class="el" href="gbfstrongs_8cpp-source.html">gbfstrongs.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_th_m_l-members.html b/doc/api-documentation/html/class_g_b_f_th_m_l-members.html
new file mode 100644
index 0000000..8ae884a
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_th_m_l-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFThML Member List</h1>This is the complete list of members for <a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>GBFThML</b>() (defined in <a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a>)</td><td><a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a>)</td><td><a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_g_b_f_th_m_l.html b/doc/api-documentation/html/class_g_b_f_th_m_l.html
new file mode 100644
index 0000000..3f49c21
--- /dev/null
+++ b/doc/api-documentation/html/class_g_b_f_th_m_l.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GBFThML class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GBFThML Class Reference</h1>this filter converts GBF text into ThML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="gbfthml_8h-source.html">gbfthml.h</a>&gt;</code>
+<p>
+<a href="class_g_b_f_th_m_l-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GBFThML::GBFThML"></a>
+&nbsp;</td><td valign=bottom><b>GBFThML</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GBFThML::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen=-1)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts GBF text into ThML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="gbfthml_8h-source.html#l00027">27</a> of file <a class="el" href="gbfthml_8h-source.html">gbfthml.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="gbfthml_8h-source.html">gbfthml.h</a><li><a class="el" href="gbfthml_8cpp-source.html">gbfthml.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_greek_lex_attribs-members.html b/doc/api-documentation/html/class_greek_lex_attribs-members.html
new file mode 100644
index 0000000..adcb19e
--- /dev/null
+++ b/doc/api-documentation/html/class_greek_lex_attribs-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GreekLexAttribs Member List</h1>This is the complete list of members for <a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>GreekLexAttribs</b>() (defined in <a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a>)</td><td><a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a>)</td><td><a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_greek_lex_attribs.html b/doc/api-documentation/html/class_greek_lex_attribs.html
new file mode 100644
index 0000000..1919cb6
--- /dev/null
+++ b/doc/api-documentation/html/class_greek_lex_attribs.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>GreekLexAttribs class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>GreekLexAttribs Class Reference</h1>this filter converts ThML text to plain text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="greeklexattribs_8h-source.html">greeklexattribs.h</a>&gt;</code>
+<p>
+<a href="class_greek_lex_attribs-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="GreekLexAttribs::GreekLexAttribs"></a>
+&nbsp;</td><td valign=bottom><b>GreekLexAttribs</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="GreekLexAttribs::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to plain text.
+<p>
+
+<p>
+Definition at line <a class="el" href="greeklexattribs_8h-source.html#l00030">30</a> of file <a class="el" href="greeklexattribs_8h-source.html">greeklexattribs.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="greeklexattribs_8h-source.html">greeklexattribs.h</a><li><a class="el" href="greeklexattribs_8cpp-source.html">greeklexattribs.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_latin1_u_t_f16-members.html b/doc/api-documentation/html/class_latin1_u_t_f16-members.html
new file mode 100644
index 0000000..0157a14
--- /dev/null
+++ b/doc/api-documentation/html/class_latin1_u_t_f16-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>Latin1UTF16 Member List</h1>This is the complete list of members for <a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Latin1UTF16</b>() (defined in <a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a>)</td><td><a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a>)</td><td><a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_latin1_u_t_f16.html b/doc/api-documentation/html/class_latin1_u_t_f16.html
new file mode 100644
index 0000000..4b89791
--- /dev/null
+++ b/doc/api-documentation/html/class_latin1_u_t_f16.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Latin1UTF16 class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>Latin1UTF16 Class Reference</h1>This filter converts Latin-1 encoded text to UTF-8.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="latin1utf16_8h-source.html">latin1utf16.h</a>&gt;</code>
+<p>
+<a href="class_latin1_u_t_f16-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="Latin1UTF16::Latin1UTF16"></a>
+&nbsp;</td><td valign=bottom><b>Latin1UTF16</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="Latin1UTF16::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts Latin-1 encoded text to UTF-8.
+<p>
+
+<p>
+Definition at line <a class="el" href="latin1utf16_8h-source.html#l00029">29</a> of file <a class="el" href="latin1utf16_8h-source.html">latin1utf16.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="latin1utf16_8h-source.html">latin1utf16.h</a><li><a class="el" href="latin1utf16_8cpp-source.html">latin1utf16.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_latin1_u_t_f8-members.html b/doc/api-documentation/html/class_latin1_u_t_f8-members.html
new file mode 100644
index 0000000..9a4e138
--- /dev/null
+++ b/doc/api-documentation/html/class_latin1_u_t_f8-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>Latin1UTF8 Member List</h1>This is the complete list of members for <a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Latin1UTF8</b>() (defined in <a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a>)</td><td><a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a>)</td><td><a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_latin1_u_t_f8.html b/doc/api-documentation/html/class_latin1_u_t_f8.html
new file mode 100644
index 0000000..aab64ae
--- /dev/null
+++ b/doc/api-documentation/html/class_latin1_u_t_f8.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Latin1UTF8 class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>Latin1UTF8 Class Reference</h1>This filter converts Latin-1 encoded text to UTF-8.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="latin1utf8_8h-source.html">latin1utf8.h</a>&gt;</code>
+<p>
+<a href="class_latin1_u_t_f8-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="Latin1UTF8::Latin1UTF8"></a>
+&nbsp;</td><td valign=bottom><b>Latin1UTF8</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="Latin1UTF8::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts Latin-1 encoded text to UTF-8.
+<p>
+
+<p>
+Definition at line <a class="el" href="latin1utf8_8h-source.html#l00029">29</a> of file <a class="el" href="latin1utf8_8h-source.html">latin1utf8.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="latin1utf8_8h-source.html">latin1utf8.h</a><li><a class="el" href="latin1utf8_8cpp-source.html">latin1utf8.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_list_key-members.html b/doc/api-documentation/html/class_list_key-members.html
new file mode 100644
index 0000000..0a6d0d7
--- /dev/null
+++ b/doc/api-documentation/html/class_list_key-members.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ListKey Member List</h1>This is the complete list of members for <a class="el" href="class_list_key.html">ListKey</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>add</b>(const SWKey &amp;ikey) (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>array</b> (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>arraycnt</b> (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>arraymax</b> (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>arraypos</b> (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>classdef</b> (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a4">ClearList</a>()</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a3">clone</a>() const</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a11">compare</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a11">copyFrom</a>(const ListKey &amp;ikey)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a12">copyFrom</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a5">Count</a>()</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a14">decrement</a>(int step)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a12">equals</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a6">Error</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a8">GetElement</a>(int pos=-1)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getShortText</b>() const (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a9">getText</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a15">increment</a>(int step)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a17">Index</a>() const</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a18">Index</a>(long index)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>init</b>() (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>keytext</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a0">ListKey</a>(const char *ikey=0)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ListKey</b>(ListKey const &amp;k) (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a9">operator&lt;&lt;</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>operator=</b>(const ListKey &amp;key) (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a4">Persist</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a5">Persist</a>(signed char ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>persist</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a6">Remove</a>()</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a13">setPosition</a>(SW_POSITION)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a7">setText</a>(const char *ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a7">SetToElement</a>(int ielement, SW_POSITION=TOP)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a0">SWKey</a>(const char *ikey=0)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a1">SWKey</a>(SWKey const &amp;k)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Traversable</b>() (defined in <a class="el" href="class_list_key.html">ListKey</a>)</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>userData</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_list_key.html#a2">~ListKey</a>()</td><td><a class="el" href="class_list_key.html">ListKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a2">~SWKey</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_list_key.html b/doc/api-documentation/html/class_list_key.html
new file mode 100644
index 0000000..375ff10
--- /dev/null
+++ b/doc/api-documentation/html/class_list_key.html
@@ -0,0 +1,658 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ListKey class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ListKey Class Reference</h1>ListKey is the basis for all types of keys that have lists of specified indexes (e.g.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="listkey_8h-source.html">listkey.h</a>&gt;</code>
+<p>
+Inheritance diagram for ListKey:<p><center><img src="class_list_key__inherit__graph.png" border="0" usemap="#_list_key__inherit__map" alt="Inheritance graph"></center>
+<map name="_list_key__inherit__map">
+<area href="class_s_w_key.html" shape="rect" coords="22,84,78,103" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="14,15,86,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for ListKey:<p><center><img src="class_list_key__coll__graph.png" border="0" usemap="#_list_key__coll__map" alt="Collaboration graph"></center>
+<map name="_list_key__coll__map">
+<area href="class_s_w_key.html" shape="rect" coords="114,197,170,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,125" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="103,15,167,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_list_key-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a0">ListKey</a> (const char *ikey=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>initializes instance of ListKey.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ListKey::ListKey"></a>
+&nbsp;</td><td valign=bottom><b>ListKey</b> (ListKey const &amp;k)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ListKey::~ListKey"></a>
+virtual&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a2">~ListKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>cleans up instance of ListKey.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a3">clone</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Returns a copy of this <a class="el" href="class_s_w_key.html">SWKey</a> object.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ListKey::ClearList"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a4">ClearList</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Clears out elements of list.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a5">Count</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Returns number of elements in list.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ListKey::Remove"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a6">Remove</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Removes current element from list.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a7">SetToElement</a> (int ielement, SW_POSITION=TOP)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets key to element number.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a8">GetElement</a> (int pos=-1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets a key element number.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>ListKey &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a9">operator&lt;&lt;</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds an element to the list.</em> <a href="#a9">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a10" doxytag="ListKey::add"></a>
+virtual void&nbsp;</td><td valign=bottom><b>add</b> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a11">copyFrom</a> (const ListKey &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this ListKey to another ListKey object.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a12">copyFrom</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a13">setPosition</a> (SW_POSITION)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Positions this key.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a14" doxytag="ListKey::decrement"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a14">decrement</a> (int step)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Decrements a number of elements.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a15" doxytag="ListKey::increment"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a15">increment</a> (int step)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Increments a number of elements.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a16" doxytag="ListKey::Traversable"></a>
+virtual char&nbsp;</td><td valign=bottom><b>Traversable</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual long&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a17">Index</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Use this function to get te current position withing a module.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual long&nbsp;</td><td valign=bottom><a class="el" href="class_list_key.html#a18">Index</a> (long index)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Returns the index for the new one given as as parameter.</em> <a href="#a18">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a19" doxytag="ListKey::operator="></a>
+SWKEY_OPERATORS ListKey &amp;&nbsp;</td><td valign=bottom><b>operator=</b> (const ListKey &amp;key)</td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="ListKey::arraypos"></a>
+int&nbsp;</td><td valign=bottom><b>arraypos</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n1" doxytag="ListKey::arraymax"></a>
+int&nbsp;</td><td valign=bottom><b>arraymax</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n2" doxytag="ListKey::arraycnt"></a>
+int&nbsp;</td><td valign=bottom><b>arraycnt</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n3" doxytag="ListKey::array"></a>
+<a class="el" href="class_s_w_key.html">SWKey</a> **&nbsp;</td><td valign=bottom><b>array</b></td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="ListKey::init"></a>
+void&nbsp;</td><td valign=bottom><b>init</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ListKey::classdef"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;</td><td valign=bottom><b>classdef</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+ListKey is the basis for all types of keys that have lists of specified indexes (e.g.
+<p>
+a list of verses, place, etc.)
+<p>
+
+<p>
+Definition at line <a class="el" href="listkey_8h-source.html#l00036">36</a> of file <a class="el" href="listkey_8h-source.html">listkey.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="ListKey::ListKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> ListKey::ListKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+initializes instance of ListKey.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+text key </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="listkey_8cpp-source.html#l00022">22</a> of file <a class="el" href="listkey_8cpp-source.html">listkey.cpp</a>.
+<p>
+References <a class="el" href="listkey_8cpp-source.html#l00064">ClearList</a>().
+<p>
+Referenced by <a class="el" href="listkey_8cpp-source.html#l00045">clone</a>().
+<p>
+<div class="fragment"><pre>00022 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>(ikey) {
+00023 arraymax = 0;
+00024 <a class="code" href="class_list_key.html#a4">ClearList</a>();
+00025 init();
+00026 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a3" doxytag="ListKey::clone"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="class_s_w_key.html">SWKey</a> * ListKey::clone </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns a copy of this <a class="el" href="class_s_w_key.html">SWKey</a> object.
+<p>
+This is useful to get a 1:1 copy of an <a class="el" href="class_s_w_key.html">SWKey</a> based object. <dl compact><dt><b>
+Returns: </b><dd>
+<a class="el" href="class_s_w_key.html">SWKey</a> </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a3">SWKey</a>.
+<p>
+Definition at line <a class="el" href="listkey_8cpp-source.html#l00045">45</a> of file <a class="el" href="listkey_8cpp-source.html">listkey.cpp</a>.
+<p>
+References <a class="el" href="listkey_8cpp-source.html#l00022">ListKey</a>().
+<p>
+<div class="fragment"><pre>00046 {
+00047 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_list_key.html#a0">ListKey</a>(*<font class="keyword">this</font>);
+00048 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a12" doxytag="ListKey::copyFrom"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void ListKey::copyFrom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+other swkey object </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a8">SWKey</a>.
+<p>
+Definition at line <a class="el" href="listkey_8h-source.html#l00090">90</a> of file <a class="el" href="listkey_8h-source.html">listkey.h</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00126">SWKey::copyFrom</a>().
+<p>
+<div class="fragment"><pre>00090 { <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey); }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a11" doxytag="ListKey::copyFrom"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void ListKey::copyFrom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const ListKey &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this ListKey to another ListKey object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+other ListKey object </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="listkey_8cpp-source.html#l00087">87</a> of file <a class="el" href="listkey_8cpp-source.html">listkey.cpp</a>.
+<p>
+References <a class="el" href="listkey_8h-source.html#l00044">array</a>, <a class="el" href="listkey_8h-source.html#l00043">arraycnt</a>, <a class="el" href="listkey_8h-source.html#l00042">arraymax</a>, <a class="el" href="listkey_8h-source.html#l00041">arraypos</a>, <a class="el" href="listkey_8cpp-source.html#l00064">ClearList</a>(), <a class="el" href="swkey_8cpp-source.html#l00045">SWKey::clone</a>(), and <a class="el" href="listkey_8cpp-source.html#l00199">SetToElement</a>().
+<p>
+<div class="fragment"><pre>00087 {
+00088 <a class="code" href="class_list_key.html#a4">ClearList</a>();
+00089
+00090 arraymax = ikey.<a class="code" href="class_list_key.html#n1">arraymax</a>;
+00091 arraypos = ikey.<a class="code" href="class_list_key.html#n0">arraypos</a>;
+00092 arraycnt = ikey.<a class="code" href="class_list_key.html#n2">arraycnt</a>;
+00093 array = (arraymax)?(<a class="code" href="class_s_w_key.html">SWKey</a> **)malloc(ikey.<a class="code" href="class_list_key.html#n1">arraymax</a> * <font class="keyword">sizeof</font>(<a class="code" href="class_s_w_key.html">SWKey</a> *)):0;
+00094 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; arraycnt; i++)
+00095 array[i] = ikey.<a class="code" href="class_list_key.html#n3">array</a>[i]-&gt;<a class="code" href="class_s_w_key.html#a3">clone</a>();
+00096
+00097 <a class="code" href="class_list_key.html#a7">SetToElement</a>(0);
+00098 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a5" doxytag="ListKey::Count"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int ListKey::Count </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns number of elements in list.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+number of elements in list </dl>
+<p>
+Definition at line <a class="el" href="listkey_8cpp-source.html#l00186">186</a> of file <a class="el" href="listkey_8cpp-source.html">listkey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l00231">VerseKey::parse</a>().
+<p>
+<div class="fragment"><pre>00186 {
+00187 <font class="keywordflow">return</font> arraycnt;
+00188 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a8" doxytag="ListKey::GetElement"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="class_s_w_key.html">SWKey</a> * ListKey::GetElement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>pos</em> = -1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets a key element number.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>pos</em>&nbsp;</td><td>
+element number to get (or default current) </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+Key or null on error </dl>
+<p>
+Definition at line <a class="el" href="listkey_8cpp-source.html#l00233">233</a> of file <a class="el" href="listkey_8cpp-source.html">listkey.cpp</a>.
+<p>
+<div class="fragment"><pre>00233 {
+00234 <font class="keywordflow">if</font> (pos &gt;=0) {
+00235 <font class="keywordflow">if</font> (pos &gt;=arraycnt)
+00236 error = KEYERR_OUTOFBOUNDS;
+00237 }
+00238 <font class="keywordflow">else</font> pos = arraypos;
+00239 <font class="keywordflow">return</font> (error) ? 0:array[pos];
+00240 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a18" doxytag="ListKey::Index"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual long ListKey::Index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">long&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>index</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the index for the new one given as as parameter.
+<p>
+The first parameter is the new index.
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html">SWKey</a>.
+<p>
+Definition at line <a class="el" href="listkey_8h-source.html#l00112">112</a> of file <a class="el" href="listkey_8h-source.html">listkey.h</a>.
+<p>
+References <a class="el" href="swkey_8h-source.html#l00208">SWKey::Index</a>().
+<p>
+<div class="fragment"><pre>00112 { <a class="code" href="class_list_key.html#a7">SetToElement</a> (index); <font class="keywordflow">return</font> <a class="code" href="class_list_key.html#a17">Index</a> (); }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a17" doxytag="ListKey::Index"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual long ListKey::Index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Use this function to get te current position withing a module.
+<p>
+Here's a small example how to use this function and <a class="el" href="class_list_key.html#a18">Index</a>(long). This function uses the GerLut module and chooses a random verse from the Bible and returns it. <div class="fragment"><pre> <font class="keyword">const</font> <font class="keywordtype">char</font>* randomVerse() {
+ <a class="code" href="class_verse_key.html">VerseKey</a> vk;
+ <a class="code" href="class_s_w_mgr.html">SWMgr</a> mgr;
+ <a class="code" href="class_locale_mgr.html#p0">LocaleMgr::systemLocaleMgr</a>.<a class="code" href="class_locale_mgr.html#a6">setDefaultLocaleName</a>(<font class="stringliteral">"de"</font>);
+
+ <a class="code" href="class_s_w_module.html">SWModule</a>* module = mgr-&gt;<a class="code" href="class_s_w_mgr.html#m2">Modules</a>(<font class="stringliteral">"GerLut"</font>);
+ srand( time(0) );
+ <font class="keyword">const</font> <font class="keywordtype">double</font> newIndex = (double(rand())/RAND_MAX)*(24108+8224);
+ vk.<a class="code" href="class_verse_key.html#a34">Index</a>(newIndex);
+ module-&gt;<a class="code" href="class_s_w_module.html#a8">SetKey</a>(vk);
+
+ <font class="keywordtype">char</font>* text;
+ sprintf(text, <font class="stringliteral">"%s: %s"</font>,(<font class="keyword">const</font> <font class="keywordtype">char</font>*)vk ,module-&gt;<a class="code" href="class_s_w_module.html#a56">StripText</a>(&amp;vk));
+ <font class="keywordflow">return</font> text;
+</pre></div>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a17">SWKey</a>.
+<p>
+Definition at line <a class="el" href="listkey_8h-source.html#l00106">106</a> of file <a class="el" href="listkey_8h-source.html">listkey.h</a>.
+<p>
+<div class="fragment"><pre>00106 { <font class="keywordflow">return</font> arraypos; }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a9" doxytag="ListKey::operator<<"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> ListKey&amp; ListKey::operator&lt;&lt; </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds an element to the list.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+the element to add </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="listkey_8h-source.html#l00082">82</a> of file <a class="el" href="listkey_8h-source.html">listkey.h</a>.
+<p>
+<div class="fragment"><pre>00082 { add(ikey); <font class="keywordflow">return</font> *<font class="keyword">this</font>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a13" doxytag="ListKey::setPosition"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void ListKey::setPosition </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SW_POSITION&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Positions this key.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>p</em>&nbsp;</td><td>
+position </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html">SWKey</a>.
+<p>
+Definition at line <a class="el" href="listkey_8cpp-source.html#l00124">124</a> of file <a class="el" href="listkey_8cpp-source.html">listkey.cpp</a>.
+<p>
+References <a class="el" href="listkey_8cpp-source.html#l00199">SetToElement</a>().
+<p>
+<div class="fragment"><pre>00124 {
+00125 <font class="keywordflow">switch</font> (p) {
+00126 <font class="keywordflow">case</font> 1: <font class="comment">// GCC won't compile P_TOP</font>
+00127 <a class="code" href="class_list_key.html#a7">SetToElement</a>(0);
+00128 <font class="keywordflow">break</font>;
+00129 <font class="keywordflow">case</font> 2: <font class="comment">// GCC won't compile P_BOTTOM</font>
+00130 <a class="code" href="class_list_key.html#a7">SetToElement</a>(arraycnt-1);
+00131 <font class="keywordflow">break</font>;
+00132 }
+00133 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a7" doxytag="ListKey::SetToElement"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char ListKey::SetToElement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>ielement</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SW_POSITION&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; = TOP</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets key to element number.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ielement</em>&nbsp;</td><td>
+element number to set to </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+error status </dl>
+<p>
+Definition at line <a class="el" href="listkey_8cpp-source.html#l00199">199</a> of file <a class="el" href="listkey_8cpp-source.html">listkey.cpp</a>.
+<p>
+Referenced by <a class="el" href="listkey_8cpp-source.html#l00087">copyFrom</a>(), <a class="el" href="listkey_8cpp-source.html#l00163">decrement</a>(), <a class="el" href="listkey_8cpp-source.html#l00140">increment</a>(), <a class="el" href="listkey_8cpp-source.html#l00247">Remove</a>(), and <a class="el" href="listkey_8cpp-source.html#l00124">setPosition</a>().
+<p>
+<div class="fragment"><pre>00199 {
+00200 arraypos = ielement;
+00201 <font class="keywordflow">if</font> (arraypos &gt;= arraycnt) {
+00202 arraypos = (arraycnt&gt;0)?arraycnt - 1:0;
+00203 error = KEYERR_OUTOFBOUNDS;
+00204 }
+00205 <font class="keywordflow">else</font> {
+00206 <font class="keywordflow">if</font> (arraypos &lt; 0) {
+00207 arraypos = 0;
+00208 error = KEYERR_OUTOFBOUNDS;
+00209 }
+00210 <font class="keywordflow">else</font> {
+00211 error = 0;
+00212 }
+00213 }
+00214
+00215 <font class="keywordflow">if</font> (arraycnt) {
+00216 (*array[arraypos]) = pos;
+00217 *<font class="keyword">this</font> = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)(*array[arraypos]);
+00218 }
+00219 <font class="keywordflow">else</font> *<font class="keyword">this</font> = <font class="stringliteral">""</font>;
+00220
+00221 <font class="keywordflow">return</font> error;
+00222 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="listkey_8h-source.html">listkey.h</a><li><a class="el" href="listkey_8cpp-source.html">listkey.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_list_key__coll__graph.png b/doc/api-documentation/html/class_list_key__coll__graph.png
new file mode 100644
index 0000000..2dac237
--- /dev/null
+++ b/doc/api-documentation/html/class_list_key__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_list_key__inherit__graph.png b/doc/api-documentation/html/class_list_key__inherit__graph.png
new file mode 100644
index 0000000..1f7a41f
--- /dev/null
+++ b/doc/api-documentation/html/class_list_key__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_locale_mgr-members.html b/doc/api-documentation/html/class_locale_mgr-members.html
new file mode 100644
index 0000000..e09373d
--- /dev/null
+++ b/doc/api-documentation/html/class_locale_mgr-members.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>LocaleMgr Member List</h1>This is the complete list of members for <a class="el" href="class_locale_mgr.html">LocaleMgr</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>defaultLocaleName</b> (defined in <a class="el" href="class_locale_mgr.html">LocaleMgr</a>)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>deleteLocales</b>() (defined in <a class="el" href="class_locale_mgr.html">LocaleMgr</a>)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a3">getAvailableLocales</a>()</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a5">getDefaultLocaleName</a>()</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a2">getLocale</a>(const char *name)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a7">loadConfigDir</a>(const char *ipath)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a0">LocaleMgr</a>(const char *iConfigPath=0)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>locales</b> (defined in <a class="el" href="class_locale_mgr.html">LocaleMgr</a>)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a6">setDefaultLocaleName</a>(const char *name)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#p0">systemLocaleMgr</a></td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a4">translate</a>(const char *text, const char *localeName=0)</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_locale_mgr.html#a1">~LocaleMgr</a>()</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_locale_mgr.html b/doc/api-documentation/html/class_locale_mgr.html
new file mode 100644
index 0000000..01d4d32
--- /dev/null
+++ b/doc/api-documentation/html/class_locale_mgr.html
@@ -0,0 +1,347 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>LocaleMgr class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>LocaleMgr Class Reference</h1>The LocaleMgr class handles all the different locales of Sword.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="localemgr_8h-source.html">localemgr.h</a>&gt;</code>
+<p>
+Collaboration diagram for LocaleMgr:<p><center><img src="class_locale_mgr__coll__graph.png" border="0" usemap="#_locale_mgr__coll__map" alt="Collaboration graph"></center>
+<map name="_locale_mgr__coll__map">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_locale_mgr-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="LocaleMgr::LocaleMgr"></a>
+&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a0">LocaleMgr</a> (const char *iConfigPath=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor of LocaleMgr You do normally not need this constructor, use <a class="el" href="class_locale_mgr.html#p0">LocaleMgr::systemLocaleMgr</a> instead.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="LocaleMgr::~LocaleMgr"></a>
+virtual&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a1">~LocaleMgr</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Default destructor of LocaleMgr.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_locale.html">SWLocale</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a2">getLocale</a> (const char *name)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Get the locale connected with the name "name".</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual list&lt; string &gt;&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a3">getAvailableLocales</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Get the list of available locales.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a4">translate</a> (const char *text, const char *localeName=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Returns translated text.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a5">getDefaultLocaleName</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Get the default locale name.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a6">setDefaultLocaleName</a> (const char *name)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Set the new standard locale of Sword.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="LocaleMgr::loadConfigDir"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#a7">loadConfigDir</a> (const char *ipath)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Augment this localmgr with all locale.conf files in a directory.</em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top>LocaleMgr&nbsp;</td><td valign=bottom><a class="el" href="class_locale_mgr.html#p0">systemLocaleMgr</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The LocaleMgr object used globally in the Sword world.</em> <a href="#p0">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="LocaleMgr::locales"></a>
+LocaleMap&nbsp;</td><td valign=bottom><b>locales</b></td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="LocaleMgr::deleteLocales"></a>
+void&nbsp;</td><td valign=bottom><b>deleteLocales</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="LocaleMgr::defaultLocaleName"></a>
+char *&nbsp;</td><td valign=bottom><b>defaultLocaleName</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The LocaleMgr class handles all the different locales of Sword.
+<p>
+It provides functions to get a list of all available locales, to get the default locale name and to get it. The other functions are not interesting for frontend programmers.
+<p>
+To get the default locale name use <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_locale_mgr.html#a5">getDefaultLocaleName</a> To set the default locale name use , <a class="el" href="class_locale_mgr.html#a6">setDefaultLocaleName</a> To get the locale for a language name use , <a class="el" href="class_locale_mgr.html#a2">getLocale</a> To get a list of availble locales use , <a class="el" href="class_locale_mgr.html#a3">getAvailableLocales</a> </dl>
+<p>
+
+<p>
+Definition at line <a class="el" href="localemgr_8h-source.html#l00049">49</a> of file <a class="el" href="localemgr_8h-source.html">localemgr.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="a3" doxytag="LocaleMgr::getAvailableLocales"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> list&lt; string &gt; LocaleMgr::getAvailableLocales </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the list of available locales.
+<p>
+@ret Returns a list of strings, which contains the names of the available locales.
+<p>
+Definition at line <a class="el" href="localemgr_8cpp-source.html#l00156">156</a> of file <a class="el" href="localemgr_8cpp-source.html">localemgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00156 {
+00157 list &lt;string&gt; retVal;
+00158 <font class="keywordflow">for</font> (LocaleMap::iterator it = locales.begin(); it != locales.end(); it++)
+00159 retVal.push_back((*it).second-&gt;getName());
+00160
+00161 <font class="keywordflow">return</font> retVal;
+00162 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a5" doxytag="LocaleMgr::getDefaultLocaleName"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * LocaleMgr::getDefaultLocaleName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the default locale name.
+<p>
+To set it use <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_locale_mgr.html#a6">setDefaultLocaleName</a></dl>@ret Returns the default locale name
+<p>
+Definition at line <a class="el" href="localemgr_8cpp-source.html#l00177">177</a> of file <a class="el" href="localemgr_8cpp-source.html">localemgr.cpp</a>.
+<p>
+Referenced by <a class="el" href="localemgr_8cpp-source.html#l00165">translate</a>().
+<p>
+<div class="fragment"><pre>00177 {
+00178 <font class="keywordflow">return</font> defaultLocaleName;
+00179 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a2" doxytag="LocaleMgr::getLocale"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="class_s_w_locale.html">SWLocale</a> * LocaleMgr::getLocale </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>name</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the locale connected with the name "name".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>name</em>&nbsp;</td><td>
+The name of the locale you want to have. For example use getLocale("de") to get the locale for the German language. </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+Returns the locale object if the locale with the name given as parameter was found. If it wasn't found return NULL. </dl>
+<p>
+Definition at line <a class="el" href="localemgr_8cpp-source.html#l00145">145</a> of file <a class="el" href="localemgr_8cpp-source.html">localemgr.cpp</a>.
+<p>
+Referenced by <a class="el" href="localemgr_8cpp-source.html#l00165">translate</a>().
+<p>
+<div class="fragment"><pre>00145 {
+00146 LocaleMap::iterator it;
+00147
+00148 it = locales.find(name);
+00149 <font class="keywordflow">if</font> (it != locales.end())
+00150 <font class="keywordflow">return</font> (*it).second;
+00151
+00152 <font class="keywordflow">return</font> 0;
+00153 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a6" doxytag="LocaleMgr::setDefaultLocaleName"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void LocaleMgr::setDefaultLocaleName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>name</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the new standard locale of Sword.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>name</em>&nbsp;</td><td>
+The name of the new default locale </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="localemgr_8cpp-source.html#l00182">182</a> of file <a class="el" href="localemgr_8cpp-source.html">localemgr.cpp</a>.
+<p>
+Referenced by <a class="el" href="localemgr_8cpp-source.html#l00046">LocaleMgr</a>().
+<p>
+<div class="fragment"><pre>00182 {
+00183 stdstr(&amp;defaultLocaleName, name);
+00184 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a4" doxytag="LocaleMgr::translate"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * LocaleMgr::translate </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>text</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>localeName</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns translated text.
+<p>
+This function uses both parameters to return the translated version of the given text.<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>The</em>&nbsp;</td><td>
+text to translate into the language given by the first parameter. </td></tr>
+<tr><td valign=top><em>localeName</em>&nbsp;</td><td>
+The name of the locale Sword should use </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+Returns the translated text. </dl>
+<p>
+Definition at line <a class="el" href="localemgr_8cpp-source.html#l00165">165</a> of file <a class="el" href="localemgr_8cpp-source.html">localemgr.cpp</a>.
+<p>
+References <a class="el" href="localemgr_8cpp-source.html#l00177">getDefaultLocaleName</a>(), <a class="el" href="localemgr_8cpp-source.html#l00145">getLocale</a>(), and <a class="el" href="swlocale_8cpp-source.html#l00069">SWLocale::translate</a>().
+<p>
+<div class="fragment"><pre>00165 {
+00166 <a class="code" href="class_s_w_locale.html">SWLocale</a> *target;
+00167 <font class="keywordflow">if</font> (!localeName) {
+00168 localeName = <a class="code" href="class_locale_mgr.html#a5">getDefaultLocaleName</a>();
+00169 }
+00170 target = <a class="code" href="class_locale_mgr.html#a2">getLocale</a>(localeName);
+00171 <font class="keywordflow">if</font> (target)
+00172 <font class="keywordflow">return</font> target-&gt;<a class="code" href="class_s_w_locale.html#a4">translate</a>(text);
+00173 <font class="keywordflow">return</font> text;
+00174 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Data Documentation</h2>
+<a name="p0" doxytag="LocaleMgr::systemLocaleMgr"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> LocaleMgr LocaleMgr::systemLocaleMgr<code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The LocaleMgr object used globally in the Sword world.
+<p>
+Do not create your own LocaleMgr, use this static object instead.
+<p>
+Definition at line <a class="el" href="localemgr_8cpp-source.html#l00043">43</a> of file <a class="el" href="localemgr_8cpp-source.html">localemgr.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l00048">VerseKey::init</a>(). </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="localemgr_8h-source.html">localemgr.h</a><li><a class="el" href="localemgr_8cpp-source.html">localemgr.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_locale_mgr__coll__graph.png b/doc/api-documentation/html/class_locale_mgr__coll__graph.png
new file mode 100644
index 0000000..21d9f3c
--- /dev/null
+++ b/doc/api-documentation/html/class_locale_mgr__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_markup_filter_mgr-members.html b/doc/api-documentation/html/class_markup_filter_mgr-members.html
new file mode 100644
index 0000000..7f5280d
--- /dev/null
+++ b/doc/api-documentation/html/class_markup_filter_mgr-members.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>MarkupFilterMgr Member List</h1>This is the complete list of members for <a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a4">AddEncodingFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddGlobalOptions</b>(SWModule *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddLocalOptions</b>(SWModule *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a3">AddRawFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_markup_filter_mgr.html#a3">AddRenderFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddStripFilters</b>(SWModule *module, ConfigEntMap &amp;section) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>CreateFilters</b>(char markup) (defined in <a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a2">Encoding</a>(char enc)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>encoding</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a0">EncodingFilterMgr</a>(char encoding=ENC_UTF8)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>fromgbf</b> (defined in <a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>fromosis</b> (defined in <a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>fromplain</b> (defined in <a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>fromthml</b> (defined in <a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getParentMgr</b>() (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>latin1utf8</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>markup</b> (defined in <a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_markup_filter_mgr.html#a2">Markup</a>(char m=FMT_UNKNOWN)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_markup_filter_mgr.html#a0">MarkupFilterMgr</a>(char markup=FMT_THML, char encoding=ENC_UTF8)</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>scsuutf8</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setParentMgr</b>(SWMgr *parentMgr) (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWFilterMgr</b>() (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>targetenc</b> (defined in <a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>)</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_encoding_filter_mgr.html#a1">~EncodingFilterMgr</a>()</td><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_markup_filter_mgr.html#a1">~MarkupFilterMgr</a>()</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilterMgr</b>() (defined in <b>SWFilterMgr</b>)</td><td><a class="el" href="class_s_w_filter_mgr.html">SWFilterMgr</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_markup_filter_mgr.html b/doc/api-documentation/html/class_markup_filter_mgr.html
new file mode 100644
index 0000000..c375cd2
--- /dev/null
+++ b/doc/api-documentation/html/class_markup_filter_mgr.html
@@ -0,0 +1,330 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>MarkupFilterMgr class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>MarkupFilterMgr Class Reference</h1>This class is like a normal SWEncodingMgr, but you can additonally specify which markup you want to use.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="markupfiltmgr_8h-source.html">markupfiltmgr.h</a>&gt;</code>
+<p>
+Inheritance diagram for MarkupFilterMgr:<p><center><img src="class_markup_filter_mgr__inherit__graph.png" border="0" usemap="#_markup_filter_mgr__inherit__map" alt="Inheritance graph"></center>
+<map name="_markup_filter_mgr__inherit__map">
+<area href="class_encoding_filter_mgr.html" shape="rect" coords="14,15,131,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for MarkupFilterMgr:<p><center><img src="class_markup_filter_mgr__coll__graph.png" border="0" usemap="#_markup_filter_mgr__coll__map" alt="Collaboration graph"></center>
+<map name="_markup_filter_mgr__coll__map">
+<area href="class_encoding_filter_mgr.html" shape="rect" coords="14,15,131,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_markup_filter_mgr-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_markup_filter_mgr.html#a0">MarkupFilterMgr</a> (char markup=FMT_THML, char encoding=ENC_UTF8)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Constructor of SWMarkupMgr.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="MarkupFilterMgr::~MarkupFilterMgr"></a>
+&nbsp;</td><td valign=bottom><a class="el" href="class_markup_filter_mgr.html#a1">~MarkupFilterMgr</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The destructor of SWMarkupMgr.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="class_markup_filter_mgr.html#a2">Markup</a> (char m=FMT_UNKNOWN)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Markup sets/gets the markup after initialization.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_markup_filter_mgr.html#a3">AddRenderFilters</a> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds the render filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="b0" doxytag="MarkupFilterMgr::CreateFilters"></a>
+void&nbsp;</td><td valign=bottom><b>CreateFilters</b> (char markup)</td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="MarkupFilterMgr::fromthml"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>fromthml</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n1" doxytag="MarkupFilterMgr::fromgbf"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>fromgbf</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n2" doxytag="MarkupFilterMgr::fromplain"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>fromplain</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n3" doxytag="MarkupFilterMgr::fromosis"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>fromosis</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n4" doxytag="MarkupFilterMgr::markup"></a>
+char&nbsp;</td><td valign=bottom><b>markup</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This class is like a normal SWEncodingMgr, but you can additonally specify which markup you want to use.
+<p>
+
+<p>
+Definition at line <a class="el" href="markupfiltmgr_8h-source.html#l00031">31</a> of file <a class="el" href="markupfiltmgr_8h-source.html">markupfiltmgr.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="MarkupFilterMgr::MarkupFilterMgr"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> MarkupFilterMgr::MarkupFilterMgr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>markup</em> = FMT_THML, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>encoding</em> = ENC_UTF8</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor of SWMarkupMgr.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>iconfig</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>isysconfig</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>autoload</em>&nbsp;</td><td>
+If this bool is true the constructor starts loading the installed modules. If you reimplemented <a class="el" href="class_s_w_mgr.html">SWMgr</a> you can set autoload=false to load the modules with your own reimplemented function. </td></tr>
+<tr><td valign=top><em>encoding</em>&nbsp;</td><td>
+The desired encoding. </td></tr>
+<tr><td valign=top><em>markup</em>&nbsp;</td><td>
+The desired markup format. </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="markupfiltmgr_8cpp-source.html#l00049">49</a> of file <a class="el" href="markupfiltmgr_8cpp-source.html">markupfiltmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00050 : <a class="code" href="class_encoding_filter_mgr.html#a0">EncodingFilterMgr</a>(enc) {
+00051
+00052 markup = mark;
+00053
+00054 CreateFilters(markup);
+00055 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a3" doxytag="MarkupFilterMgr::AddRenderFilters"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void MarkupFilterMgr::AddRenderFilters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>module</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>ConfigEntMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>section</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds the render filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>module</em>&nbsp;</td><td>
+To this module the render filter(s) are added </td></tr>
+<tr><td valign=top><em>section</em>&nbsp;</td><td>
+We use this section to get a list of filters we should apply to the module </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="markupfiltmgr_8cpp-source.html#l00168">168</a> of file <a class="el" href="markupfiltmgr_8cpp-source.html">markupfiltmgr.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00414">SWModule::AddRenderFilter</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00206">SWModule::Markup</a>().
+<p>
+<div class="fragment"><pre>00168 {
+00169 <font class="keywordflow">switch</font> (module-&gt;<a class="code" href="class_s_w_module.html#a20">Markup</a>()) {
+00170 <font class="keywordflow">case</font> FMT_THML:
+00171 <font class="keywordflow">if</font> (fromthml)
+00172 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromthml);
+00173 <font class="keywordflow">break</font>;
+00174 <font class="keywordflow">case</font> FMT_GBF:
+00175 <font class="keywordflow">if</font> (fromgbf)
+00176 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromgbf);
+00177 <font class="keywordflow">break</font>;
+00178 <font class="keywordflow">case</font> FMT_PLAIN:
+00179 <font class="keywordflow">if</font> (fromplain)
+00180 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromplain);
+00181 <font class="keywordflow">break</font>;
+00182 <font class="keywordflow">case</font> FMT_OSIS:
+00183 <font class="keywordflow">if</font> (fromosis)
+00184 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromosis);
+00185 <font class="keywordflow">break</font>;
+00186 }
+00187 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a2" doxytag="MarkupFilterMgr::Markup"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char MarkupFilterMgr::Markup </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>m</em> = FMT_UNKNOWN </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Markup sets/gets the markup after initialization.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>m</em>&nbsp;</td><td>
+The new markup or FMT_UNKNOWN if you just want to get the current markup. </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+The current (possibly changed) markup format. </dl>
+<p>
+Definition at line <a class="el" href="markupfiltmgr_8cpp-source.html#l00080">80</a> of file <a class="el" href="markupfiltmgr_8cpp-source.html">markupfiltmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00080 {
+00081 <font class="keywordflow">if</font> (mark &amp;&amp; mark != markup) {
+00082 markup = mark;
+00083 ModMap::const_iterator module;
+00084
+00085 SWFilter * oldplain = fromplain;
+00086 SWFilter * oldthml = fromthml;
+00087 SWFilter * oldgbf = fromgbf;
+00088 SWFilter * oldosis = fromosis;
+00089
+00090 CreateFilters(markup);
+00091
+00092 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00093 <font class="keywordflow">switch</font> (module-&gt;second-&gt;Markup()) {
+00094 <font class="keywordflow">case</font> FMT_THML:
+00095 <font class="keywordflow">if</font> (oldthml != fromthml) {
+00096 <font class="keywordflow">if</font> (oldthml) {
+00097 <font class="keywordflow">if</font> (!fromthml) {
+00098 module-&gt;second-&gt;RemoveRenderFilter(oldthml);
+00099 }
+00100 <font class="keywordflow">else</font> {
+00101 module-&gt;second-&gt;ReplaceRenderFilter(oldthml, fromthml);
+00102 }
+00103 }
+00104 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromthml) {
+00105 module-&gt;second-&gt;AddRenderFilter(fromthml);
+00106 }
+00107 }
+00108 <font class="keywordflow">break</font>;
+00109 <font class="keywordflow">case</font> FMT_GBF:
+00110 <font class="keywordflow">if</font> (oldgbf != fromgbf) {
+00111 <font class="keywordflow">if</font> (oldgbf) {
+00112 <font class="keywordflow">if</font> (!fromgbf) {
+00113 module-&gt;second-&gt;RemoveRenderFilter(oldgbf);
+00114 }
+00115 <font class="keywordflow">else</font> {
+00116 module-&gt;second-&gt;ReplaceRenderFilter(oldgbf, fromgbf);
+00117 }
+00118 }
+00119 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromgbf) {
+00120 module-&gt;second-&gt;AddRenderFilter(fromgbf);
+00121 }
+00122 <font class="keywordflow">break</font>;
+00123 }
+00124 <font class="keywordflow">case</font> FMT_PLAIN:
+00125 <font class="keywordflow">if</font> (oldplain != fromplain) {
+00126 <font class="keywordflow">if</font> (oldplain) {
+00127 <font class="keywordflow">if</font> (!fromplain) {
+00128 module-&gt;second-&gt;RemoveRenderFilter(oldplain);
+00129 }
+00130 <font class="keywordflow">else</font> {
+00131 module-&gt;second-&gt;ReplaceRenderFilter(oldplain, fromplain);
+00132 }
+00133 }
+00134 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromplain) {
+00135 module-&gt;second-&gt;AddRenderFilter(fromplain);
+00136 }
+00137 <font class="keywordflow">break</font>;
+00138 }
+00139 <font class="keywordflow">case</font> FMT_OSIS:
+00140 <font class="keywordflow">if</font> (oldosis != fromosis) {
+00141 <font class="keywordflow">if</font> (oldosis) {
+00142 <font class="keywordflow">if</font> (!fromosis) {
+00143 module-&gt;second-&gt;RemoveRenderFilter(oldosis);
+00144 }
+00145 <font class="keywordflow">else</font> {
+00146 module-&gt;second-&gt;ReplaceRenderFilter(oldosis, fromosis);
+00147 }
+00148 }
+00149 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromosis) {
+00150 module-&gt;second-&gt;AddRenderFilter(fromosis);
+00151 }
+00152 <font class="keywordflow">break</font>;
+00153 }
+00154 }
+00155
+00156 <font class="keywordflow">if</font> (oldthml)
+00157 <font class="keyword">delete</font> oldthml;
+00158 <font class="keywordflow">if</font> (oldgbf)
+00159 <font class="keyword">delete</font> oldgbf;
+00160 <font class="keywordflow">if</font> (oldplain)
+00161 <font class="keyword">delete</font> oldplain;
+00162 <font class="keywordflow">if</font> (oldosis)
+00163 <font class="keyword">delete</font> oldosis;
+00164 }
+00165 <font class="keywordflow">return</font> markup;
+00166 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="markupfiltmgr_8h-source.html">markupfiltmgr.h</a><li><a class="el" href="markupfiltmgr_8cpp-source.html">markupfiltmgr.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_markup_filter_mgr__coll__graph.png b/doc/api-documentation/html/class_markup_filter_mgr__coll__graph.png
new file mode 100644
index 0000000..ddc7564
--- /dev/null
+++ b/doc/api-documentation/html/class_markup_filter_mgr__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_markup_filter_mgr__inherit__graph.png b/doc/api-documentation/html/class_markup_filter_mgr__inherit__graph.png
new file mode 100644
index 0000000..ddc7564
--- /dev/null
+++ b/doc/api-documentation/html/class_markup_filter_mgr__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_p_l_a_i_n_footnotes-members.html b/doc/api-documentation/html/class_p_l_a_i_n_footnotes-members.html
new file mode 100644
index 0000000..e11c666
--- /dev/null
+++ b/doc/api-documentation/html/class_p_l_a_i_n_footnotes-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>PLAINFootnotes Member List</h1>This is the complete list of members for <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>PLAINFootnotes</b>() (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~PLAINFootnotes</b>() (defined in <a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>)</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_p_l_a_i_n_footnotes.html b/doc/api-documentation/html/class_p_l_a_i_n_footnotes.html
new file mode 100644
index 0000000..383ccae
--- /dev/null
+++ b/doc/api-documentation/html/class_p_l_a_i_n_footnotes.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>PLAINFootnotes class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>PLAINFootnotes Class Reference</h1>Shows or hides footnotes in plain text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="plainfootnotes_8h-source.html">plainfootnotes.h</a>&gt;</code>
+<p>
+<a href="class_p_l_a_i_n_footnotes-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="PLAINFootnotes::PLAINFootnotes"></a>
+&nbsp;</td><td valign=bottom><b>PLAINFootnotes</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="PLAINFootnotes::~PLAINFootnotes"></a>
+virtual&nbsp;</td><td valign=bottom><b>~PLAINFootnotes</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="PLAINFootnotes::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="PLAINFootnotes::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="PLAINFootnotes::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="PLAINFootnotes::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="PLAINFootnotes::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="PLAINFootnotes::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="PLAINFootnotes::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="PLAINFootnotes::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="PLAINFootnotes::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="PLAINFootnotes::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="PLAINFootnotes::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Footnotes"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="PLAINFootnotes::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Footnotes On and Off In Bible Texts If They Exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Shows or hides footnotes in plain text.
+<p>
+<dl compact><dt><b>
+Author: </b><dd>
+The team of BibleTime </dl>
+<p>
+
+<p>
+Definition at line <a class="el" href="plainfootnotes_8h-source.html#l00033">33</a> of file <a class="el" href="plainfootnotes_8h-source.html">plainfootnotes.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="plainfootnotes_8h-source.html">plainfootnotes.h</a><li><a class="el" href="plainfootnotes_8cpp-source.html">plainfootnotes.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l-members.html b/doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l-members.html
new file mode 100644
index 0000000..14083d7
--- /dev/null
+++ b/doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>PLAINHTML Member List</h1>This is the complete list of members for <a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>PLAINHTML</b>() (defined in <a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a>)</td><td><a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a>)</td><td><a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l.html b/doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l.html
new file mode 100644
index 0000000..09e0e9c
--- /dev/null
+++ b/doc/api-documentation/html/class_p_l_a_i_n_h_t_m_l.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>PLAINHTML class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>PLAINHTML Class Reference</h1>this filter converts plain text to HTML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="plainhtml_8h-source.html">plainhtml.h</a>&gt;</code>
+<p>
+<a href="class_p_l_a_i_n_h_t_m_l-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="PLAINHTML::PLAINHTML"></a>
+&nbsp;</td><td valign=bottom><b>PLAINHTML</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="PLAINHTML::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts plain text to HTML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="plainhtml_8h-source.html#l00031">31</a> of file <a class="el" href="plainhtml_8h-source.html">plainhtml.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="plainhtml_8h-source.html">plainhtml.h</a><li><a class="el" href="plainhtml_8cpp-source.html">plainhtml.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_r_t_f_h_t_m_l-members.html b/doc/api-documentation/html/class_r_t_f_h_t_m_l-members.html
new file mode 100644
index 0000000..98d3c94
--- /dev/null
+++ b/doc/api-documentation/html/class_r_t_f_h_t_m_l-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>RTFHTML Member List</h1>This is the complete list of members for <a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a>)</td><td><a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>RTFHTML</b>() (defined in <a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a>)</td><td><a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_r_t_f_h_t_m_l.html b/doc/api-documentation/html/class_r_t_f_h_t_m_l.html
new file mode 100644
index 0000000..bd2226d
--- /dev/null
+++ b/doc/api-documentation/html/class_r_t_f_h_t_m_l.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>RTFHTML class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>RTFHTML Class Reference</h1>this filter converts RTF text into HTML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="rtfhtml_8h-source.html">rtfhtml.h</a>&gt;</code>
+<p>
+<a href="class_r_t_f_h_t_m_l-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="RTFHTML::RTFHTML"></a>
+&nbsp;</td><td valign=bottom><b>RTFHTML</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="RTFHTML::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts RTF text into HTML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="rtfhtml_8h-source.html#l00030">30</a> of file <a class="el" href="rtfhtml_8h-source.html">rtfhtml.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="rtfhtml_8h-source.html">rtfhtml.h</a><li><a class="el" href="rtfhtml_8cpp-source.html">rtfhtml.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_r_w_p_h_t_m_l-members.html b/doc/api-documentation/html/class_r_w_p_h_t_m_l-members.html
new file mode 100644
index 0000000..4c4ea35
--- /dev/null
+++ b/doc/api-documentation/html/class_r_w_p_h_t_m_l-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>RWPHTML Member List</h1>This is the complete list of members for <a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a>)</td><td><a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>RWPHTML</b>() (defined in <a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a>)</td><td><a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_r_w_p_h_t_m_l.html b/doc/api-documentation/html/class_r_w_p_h_t_m_l.html
new file mode 100644
index 0000000..44d36e6
--- /dev/null
+++ b/doc/api-documentation/html/class_r_w_p_h_t_m_l.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>RWPHTML class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>RWPHTML Class Reference</h1>this filter converts RWP text to HTML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="rwphtml_8h-source.html">rwphtml.h</a>&gt;</code>
+<p>
+<a href="class_r_w_p_h_t_m_l-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="RWPHTML::RWPHTML"></a>
+&nbsp;</td><td valign=bottom><b>RWPHTML</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="RWPHTML::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts RWP text to HTML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="rwphtml_8h-source.html#l00031">31</a> of file <a class="el" href="rwphtml_8h-source.html">rwphtml.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="rwphtml_8h-source.html">rwphtml.h</a><li><a class="el" href="rwphtml_8cpp-source.html">rwphtml.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_r_w_p_r_t_f-members.html b/doc/api-documentation/html/class_r_w_p_r_t_f-members.html
new file mode 100644
index 0000000..bd6112a
--- /dev/null
+++ b/doc/api-documentation/html/class_r_w_p_r_t_f-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>RWPRTF Member List</h1>This is the complete list of members for <a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a>)</td><td><a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>RWPRTF</b>() (defined in <a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a>)</td><td><a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_r_w_p_r_t_f.html b/doc/api-documentation/html/class_r_w_p_r_t_f.html
new file mode 100644
index 0000000..ecad05a
--- /dev/null
+++ b/doc/api-documentation/html/class_r_w_p_r_t_f.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>RWPRTF class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>RWPRTF Class Reference</h1>this filter converts RWP text to RTF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="rwprtf_8h-source.html">rwprtf.h</a>&gt;</code>
+<p>
+<a href="class_r_w_p_r_t_f-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="RWPRTF::RWPRTF"></a>
+&nbsp;</td><td valign=bottom><b>RWPRTF</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="RWPRTF::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts RWP text to RTF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="rwprtf_8h-source.html#l00033">33</a> of file <a class="el" href="rwprtf_8h-source.html">rwprtf.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="rwprtf_8h-source.html">rwprtf.h</a><li><a class="el" href="rwprtf_8cpp-source.html">rwprtf.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_c_s_u_u_t_f8-members.html b/doc/api-documentation/html/class_s_c_s_u_u_t_f8-members.html
new file mode 100644
index 0000000..f32cad9
--- /dev/null
+++ b/doc/api-documentation/html/class_s_c_s_u_u_t_f8-members.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SCSUUTF8 Member List</h1>This is the complete list of members for <a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>c</b> (defined in <a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>)</td><td><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>d</b> (defined in <a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>)</td><td><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>)</td><td><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SCSUUTF8</b>() (defined in <a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>)</td><td><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF8Output</b>(unsigned long, unsigned char *text) (defined in <a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>)</td><td><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_c_s_u_u_t_f8.html b/doc/api-documentation/html/class_s_c_s_u_u_t_f8.html
new file mode 100644
index 0000000..b3b4e4a
--- /dev/null
+++ b/doc/api-documentation/html/class_s_c_s_u_u_t_f8.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SCSUUTF8 class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SCSUUTF8 Class Reference</h1>This filter converts SCSU compressed (encoded) text to UTF-8.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="scsuutf8_8h-source.html">scsuutf8.h</a>&gt;</code>
+<p>
+<a href="class_s_c_s_u_u_t_f8-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="SCSUUTF8::SCSUUTF8"></a>
+&nbsp;</td><td valign=bottom><b>SCSUUTF8</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SCSUUTF8::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="SCSUUTF8::UTF8Output"></a>
+unsigned char *&nbsp;</td><td valign=bottom><b>UTF8Output</b> (unsigned long, unsigned char *text)</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="SCSUUTF8::c"></a>
+unsigned long&nbsp;</td><td valign=bottom><b>c</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="SCSUUTF8::d"></a>
+unsigned long&nbsp;</td><td valign=bottom><b>d</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts SCSU compressed (encoded) text to UTF-8.
+<p>
+
+<p>
+Definition at line <a class="el" href="scsuutf8_8h-source.html#l00029">29</a> of file <a class="el" href="scsuutf8_8h-source.html">scsuutf8.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="scsuutf8_8h-source.html">scsuutf8.h</a><li><a class="el" href="scsuutf8_8cpp-source.html">scsuutf8.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_basic_filter-members.html b/doc/api-documentation/html/class_s_w_basic_filter-members.html
new file mode 100644
index 0000000..9ac26f3
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_basic_filter-members.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWBasicFilter Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>addEscapeStringSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>addTokenSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>DualStringMap</b> typedef (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escEnd</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escStart</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escStringCaseSensitive</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b14">handleEscapeString</a>(char **buf, const char *escString, DualStringMap &amp;userData)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b13">handleToken</a>(char **buf, const char *token, DualStringMap &amp;userData)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>key</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>module</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>passThruUnknownEsc</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>passThruUnknownToken</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b12">pushString</a>(char **buf, const char *format,...)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resultBuffer</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b1">setEscapeEnd</a>(const char *escEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b0">setEscapeStart</a>(const char *escStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setEscapeStringCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b5">setPassThruUnknownEscapeString</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b4">setPassThruUnknownToken</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setTokenCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b3">setTokenEnd</a>(const char *tokenEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b2">setTokenStart</a>(const char *tokenStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteEscapeString</b>(char **buf, const char *escString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteToken</b>(char **buf, const char *token) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenCaseSensitive</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenEnd</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenStart</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_basic_filter.html b/doc/api-documentation/html/class_s_w_basic_filter.html
new file mode 100644
index 0000000..4862f3c
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_basic_filter.html
@@ -0,0 +1,331 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWBasicFilter class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWBasicFilter Class Reference</h1>A filter providing commonly used functionality.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swbasicfilter_8h-source.html">swbasicfilter.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWBasicFilter:<p><center><img src="class_s_w_basic_filter__inherit__graph.png" border="0" usemap="#_s_w_basic_filter__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_basic_filter__inherit__map">
+<area href="class_g_b_f_h_t_m_l_h_r_e_f.html" shape="rect" coords="14,84,121,103" alt="">
+<area href="class_th_m_l_h_t_m_l.html" shape="rect" coords="145,84,225,103" alt="">
+<area href="class_th_m_l_h_t_m_l_h_r_e_f.html" shape="rect" coords="249,84,363,103" alt="">
+<area href="class_th_m_l_r_t_f.html" shape="rect" coords="387,84,457,103" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWBasicFilter:<p><center><img src="class_s_w_basic_filter__coll__graph.png" border="0" usemap="#_s_w_basic_filter__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_basic_filter__coll__map">
+<area href="class_s_w_key.html" shape="rect" coords="150,196,206,215" alt="">
+<area href="class_s_w_module.html" shape="rect" coords="179,391,254,409" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,293,129,312" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="226,105,298,124" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="309,196,383,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="151,15,215,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_basic_filter-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="SWBasicFilter::SWBasicFilter"></a>
+&nbsp;</td><td valign=bottom><b>SWBasicFilter</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWBasicFilter::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="SWBasicFilter::~SWBasicFilter"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWBasicFilter</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Protected Types</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="t0" doxytag="SWBasicFilter::DualStringMap"></a>
+typedef map&lt; string, string &gt;&nbsp;</td><td valign=bottom><b>DualStringMap</b></td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="b0" doxytag="SWBasicFilter::setEscapeStart"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b0">setEscapeStart</a> (const char *escStart)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets the beginning of escape sequence (by default "&amp;").</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="b1" doxytag="SWBasicFilter::setEscapeEnd"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b1">setEscapeEnd</a> (const char *escEnd)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets the end of escape sequence (by default ";").</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="b2" doxytag="SWBasicFilter::setTokenStart"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b2">setTokenStart</a> (const char *tokenStart)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets the beginning of token start sequence (by default "&lt;").</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="b3" doxytag="SWBasicFilter::setTokenEnd"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b3">setTokenEnd</a> (const char *tokenEnd)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets the end of token start sequence (by default "&gt;").</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b4">setPassThruUnknownToken</a> (bool val)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets whether pass thru unknown tokens unchanged or just ignore (remove) them.</em> <a href="#b4">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b5">setPassThruUnknownEscapeString</a> (bool val)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets whether pass thru unknown escape sequences unchanged or just ignore (remove) them.</em> <a href="#b5">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="b6" doxytag="SWBasicFilter::setTokenCaseSensitive"></a>
+void&nbsp;</td><td valign=bottom><b>setTokenCaseSensitive</b> (bool val)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b7" doxytag="SWBasicFilter::setEscapeStringCaseSensitive"></a>
+void&nbsp;</td><td valign=bottom><b>setEscapeStringCaseSensitive</b> (bool val)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b8" doxytag="SWBasicFilter::addTokenSubstitute"></a>
+void&nbsp;</td><td valign=bottom><b>addTokenSubstitute</b> (const char *findString, const char *replaceString)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b9" doxytag="SWBasicFilter::addEscapeStringSubstitute"></a>
+void&nbsp;</td><td valign=bottom><b>addEscapeStringSubstitute</b> (const char *findString, const char *replaceString)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b10" doxytag="SWBasicFilter::substituteToken"></a>
+bool&nbsp;</td><td valign=bottom><b>substituteToken</b> (char **buf, const char *token)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b11" doxytag="SWBasicFilter::substituteEscapeString"></a>
+bool&nbsp;</td><td valign=bottom><b>substituteEscapeString</b> (char **buf, const char *escString)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b12" doxytag="SWBasicFilter::pushString"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b12">pushString</a> (char **buf, const char *format,...)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Like sprintf.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b13">handleToken</a> (char **buf, const char *token, DualStringMap &amp;userData)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is called for every token encountered in the input text.</em> <a href="#b13">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_basic_filter.html#b14">handleEscapeString</a> (char **buf, const char *escString, DualStringMap &amp;userData)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is called for every escape sequence encountered in the input text.</em> <a href="#b14">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="SWBasicFilter::module"></a>
+const <a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td><td valign=bottom><b>module</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n1" doxytag="SWBasicFilter::key"></a>
+const <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><b>key</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n2" doxytag="SWBasicFilter::resultBuffer"></a>
+char *&nbsp;</td><td valign=bottom><b>resultBuffer</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n3" doxytag="SWBasicFilter::tokenSubMap"></a>
+DualStringMap&nbsp;</td><td valign=bottom><b>tokenSubMap</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n4" doxytag="SWBasicFilter::escSubMap"></a>
+DualStringMap&nbsp;</td><td valign=bottom><b>escSubMap</b></td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="SWBasicFilter::tokenStart"></a>
+char *&nbsp;</td><td valign=bottom><b>tokenStart</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="SWBasicFilter::tokenEnd"></a>
+char *&nbsp;</td><td valign=bottom><b>tokenEnd</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o2" doxytag="SWBasicFilter::escStart"></a>
+char *&nbsp;</td><td valign=bottom><b>escStart</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o3" doxytag="SWBasicFilter::escEnd"></a>
+char *&nbsp;</td><td valign=bottom><b>escEnd</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o4" doxytag="SWBasicFilter::escStringCaseSensitive"></a>
+bool&nbsp;</td><td valign=bottom><b>escStringCaseSensitive</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o5" doxytag="SWBasicFilter::tokenCaseSensitive"></a>
+bool&nbsp;</td><td valign=bottom><b>tokenCaseSensitive</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o6" doxytag="SWBasicFilter::passThruUnknownToken"></a>
+bool&nbsp;</td><td valign=bottom><b>passThruUnknownToken</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o7" doxytag="SWBasicFilter::passThruUnknownEsc"></a>
+bool&nbsp;</td><td valign=bottom><b>passThruUnknownEsc</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A filter providing commonly used functionality.
+<p>
+This filter has facilities for handling SGML/HTML/XML like tokens and escape strings (like SGML entities). It has the facility for just substituting the given tokens and escape strings to other strings and for "manual" custom token handling.
+<p>
+In this class the functions with arguments looking as <code>char **buf</code> write a character sequnce at address specified by <code>*buf</code> address and change <code>*buf</code> to point past the last char of the written sequence.
+<p>
+
+<p>
+Definition at line <a class="el" href="swbasicfilter_8h-source.html#l00045">45</a> of file <a class="el" href="swbasicfilter_8h-source.html">swbasicfilter.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="b14" doxytag="SWBasicFilter::handleEscapeString"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool SWBasicFilter::handleEscapeString </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>escString</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>DualStringMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>userData</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is called for every escape sequence encountered in the input text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the output buffer (FIXME: what is its size?) </td></tr>
+<tr><td valign=top><em>escString</em>&nbsp;</td><td>
+the escape sequence (e.g. <code>"amp"</code> for &amp;amp;) </td></tr>
+<tr><td valign=top><em>userData</em>&nbsp;</td><td>
+FIXME: document this </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+<code>false</code> if was not handled and should be handled in the default way (by just substituting). </dl>
+<p>
+Definition at line <a class="el" href="swbasicfilter_8cpp-source.html#l00166">166</a> of file <a class="el" href="swbasicfilter_8cpp-source.html">swbasicfilter.cpp</a>.
+<p>
+<div class="fragment"><pre>00166 {
+00167 <font class="keywordflow">return</font> substituteEscapeString(buf, escString);
+00168 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="b13" doxytag="SWBasicFilter::handleToken"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool SWBasicFilter::handleToken </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>token</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>DualStringMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>userData</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is called for every token encountered in the input text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the output buffer (FIXME: what is its size?) </td></tr>
+<tr><td valign=top><em>token</em>&nbsp;</td><td>
+the token (e.g. <code>"p align='left'"</code> </td></tr>
+<tr><td valign=top><em>userData</em>&nbsp;</td><td>
+FIXME: document this </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+<code>false</code> if was not handled and should be handled in the default way (by just substituting). </dl>
+<p>
+Reimplemented in <a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">GBFHTMLHREF</a>, <a class="el" href="class_th_m_l_h_t_m_l.html#b0">ThMLHTML</a>, <a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html#b0">ThMLHTMLHREF</a>, and <a class="el" href="class_th_m_l_r_t_f.html#b0">ThMLRTF</a>.
+<p>
+Definition at line <a class="el" href="swbasicfilter_8cpp-source.html#l00161">161</a> of file <a class="el" href="swbasicfilter_8cpp-source.html">swbasicfilter.cpp</a>.
+<p>
+<div class="fragment"><pre>00161 {
+00162 <font class="keywordflow">return</font> substituteToken(buf, token);
+00163 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="b5" doxytag="SWBasicFilter::setPassThruUnknownEscapeString"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWBasicFilter::setPassThruUnknownEscapeString </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>val</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [protected]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets whether pass thru unknown escape sequences unchanged or just ignore (remove) them.
+<p>
+Default is false.
+<p>
+Definition at line <a class="el" href="swbasicfilter_8cpp-source.html#l00054">54</a> of file <a class="el" href="swbasicfilter_8cpp-source.html">swbasicfilter.cpp</a>.
+<p>
+<div class="fragment"><pre>00054 {
+00055 passThruUnknownEsc = val;
+00056 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="b4" doxytag="SWBasicFilter::setPassThruUnknownToken"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWBasicFilter::setPassThruUnknownToken </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>val</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [protected]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets whether pass thru unknown tokens unchanged or just ignore (remove) them.
+<p>
+Default is false.
+<p>
+Definition at line <a class="el" href="swbasicfilter_8cpp-source.html#l00049">49</a> of file <a class="el" href="swbasicfilter_8cpp-source.html">swbasicfilter.cpp</a>.
+<p>
+<div class="fragment"><pre>00049 {
+00050 passThruUnknownToken = val;
+00051 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swbasicfilter_8h-source.html">swbasicfilter.h</a><li><a class="el" href="swbasicfilter_8cpp-source.html">swbasicfilter.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_basic_filter__coll__graph.png b/doc/api-documentation/html/class_s_w_basic_filter__coll__graph.png
new file mode 100644
index 0000000..2d0ae69
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_basic_filter__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_basic_filter__inherit__graph.png b/doc/api-documentation/html/class_s_w_basic_filter__inherit__graph.png
new file mode 100644
index 0000000..5925e01
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_basic_filter__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_class-members.html b/doc/api-documentation/html/class_s_w_class-members.html
new file mode 100644
index 0000000..e64ffd3
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_class-members.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWClass Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_class.html">SWClass</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>descends</b> (defined in <a class="el" href="class_s_w_class.html">SWClass</a>)</td><td><a class="el" href="class_s_w_class.html">SWClass</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>isAssignableFrom</b>(const char *className) const (defined in <a class="el" href="class_s_w_class.html">SWClass</a>)</td><td><a class="el" href="class_s_w_class.html">SWClass</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWClass</b>(const char **descends) (defined in <a class="el" href="class_s_w_class.html">SWClass</a>)</td><td><a class="el" href="class_s_w_class.html">SWClass</a></td><td><code> [inline]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_class.html b/doc/api-documentation/html/class_s_w_class.html
new file mode 100644
index 0000000..db17cf3
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_class.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWClass class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWClass Class Reference</h1>Class used for SWDYNAMIC_CAST to save the inheritance order.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swobject_8h-source.html">swobject.h</a>&gt;</code>
+<p>
+<a href="class_s_w_class-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="SWClass::SWClass"></a>
+&nbsp;</td><td valign=bottom><b>SWClass</b> (const char **descends)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWClass::isAssignableFrom"></a>
+bool&nbsp;</td><td valign=bottom><b>isAssignableFrom</b> (const char *className) const</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="SWClass::descends"></a>
+const char **&nbsp;</td><td valign=bottom><b>descends</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Class used for SWDYNAMIC_CAST to save the inheritance order.
+<p>
+
+<p>
+Definition at line <a class="el" href="swobject_8h-source.html#l00018">18</a> of file <a class="el" href="swobject_8h-source.html">swobject.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="swobject_8h-source.html">swobject.h</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_com-members.html b/doc/api-documentation/html/class_s_w_com-members.html
new file mode 100644
index 0000000..22da413
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_com-members.html
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWCom Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_com.html">SWCom</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a45">AddEncodingFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a54">AddOptionFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a51">AddRawFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a41">AddRenderFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a49">AddStripFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>config</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_com.html#a2">CreateKey</a>()</td><td><a class="el" href="class_s_w_com.html">SWCom</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d1">createModule</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>createSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a35">deleteEntry</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a16">Description</a>(const char *imoddesc=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>direction</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a18">Direction</a>(signed char newdir=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n15">disp</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a14">Disp</a>(SWDisplay *idisp=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a13">Display</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>encoding</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a19">Encoding</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a48">encodingFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n22">encodingFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entryAttributes</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybuf</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybufallocsize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrySize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a2">Error</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a52">filterBuffer</a>(FilterList *filters, char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>flush</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfig</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfigEntry</b>(const char *key) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a7">getEntrySize</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a28">getRawEntry</a>()=0</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getSkipConsecutiveLinks</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>hasSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>isProcessEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a25">isSearchOptimallySupported</a>(const char *istr, int searchType, int flags, SWKey *scope)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a3">isUnicode</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a31">isWritable</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a10">Key</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a11">Key</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n6">key</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a12">KeyText</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a21">Lang</a>(const char *imodlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>lastAccess</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>listkey</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>markup</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a20">Markup</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>moddesc</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modlang</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modname</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modtype</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a15">Name</a>(const char *imodname=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d0">nullPercent</a>(char percent, void *userData)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a27">operator const char *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a29">operator SWKey &amp;</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a30">operator SWKey *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a38">operator++</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a37">operator+=</a>(int increment)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a39">operator--</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a36">operator-=</a>(int decrement)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a33">operator&lt;&lt;</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a34">operator&lt;&lt;</a>(const SWKey *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a40">operator=</a>(SW_POSITION p)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a55">optionFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n21">optionFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ownConfig</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>procEntAttr</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>processEntryAttributes</b>(bool val) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>rawdisp</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a53">rawFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n19">rawFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a46">RemoveEncodingFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a42">RemoveRenderFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a44">renderFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n20">renderFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a57">RenderText</a>(char *buf=0, int len=-1, bool render=true)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a59">RenderText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a47">ReplaceEncodingFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a43">ReplaceRenderFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resourceConsumption</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a22">Search</a>(const char *istr, int searchType=0, int flags=0, SWKey *scope=0, bool *justCheckIfSupported=0, void(*percent)(char, void *)=&amp;nullPercent, void *percentUserData=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setConfig</b>(ConfigEntMap *config) (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a32">setentry</a>(const char *inbuf, long len)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a8">SetKey</a>(const SWKey *ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a9">SetKey</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a60">setSkipConsecutiveLinks</a>(bool val)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>skipConsecutiveLinks</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a50">stripFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n18">stripFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a56">StripText</a>(char *buf=0, int len=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a58">StripText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_com.html#a0">SWCom</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, SWTextEncoding enc=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup mark=FMT_UNKNOWN, const char *ilang=0)</td><td><a class="el" href="class_s_w_com.html">SWCom</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a0">SWModule</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, char *imodtype=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *modlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#m0">terminateSearch</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a17">Type</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWCom</b>() (defined in <a class="el" href="class_s_w_com.html">SWCom</a>)</td><td><a class="el" href="class_s_w_com.html">SWCom</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a1">~SWModule</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_com.html b/doc/api-documentation/html/class_s_w_com.html
new file mode 100644
index 0000000..21c6f8c
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_com.html
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWCom class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWCom Class Reference</h1>The basis for all commentary modules.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swcom_8h-source.html">swcom.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWCom:<p><center><img src="class_s_w_com__inherit__graph.png" border="0" usemap="#_s_w_com__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_com__inherit__map">
+<area href="class_s_w_module.html" shape="rect" coords="14,15,89,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWCom:<p><center><img src="class_s_w_com__coll__graph.png" border="0" usemap="#_s_w_com__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_com__coll__map">
+<area href="class_s_w_module.html" shape="rect" coords="193,391,267,410" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,294,129,313" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="122,197,178,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,125" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="273,197,347,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="145,15,209,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_com-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_com.html#a0">SWCom</a> (const char *imodname=0, const char *imoddesc=0, <a class="el" href="class_s_w_display.html">SWDisplay</a> *idisp=0, SWTextEncoding enc=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup mark=FMT_UNKNOWN, const char *ilang=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Initializes data for instance of SWCom.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWCom::~SWCom"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWCom</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_com.html#a2">CreateKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Allocates a key of specific type for module The different reimplementatiosn of <a class="el" href="class_s_w_module.html">SWModule</a> (e.g.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The basis for all commentary modules.
+<p>
+
+<p>
+Definition at line <a class="el" href="swcom_8h-source.html#l00033">33</a> of file <a class="el" href="swcom_8h-source.html">swcom.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWCom::SWCom"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWCom::SWCom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imodname</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imoddesc</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>idisp</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextEncoding&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>enc</em> = ENC_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextDirection&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>dir</em> = DIRECTION_LTR, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextMarkup&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>mark</em> = FMT_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>ilang</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Initializes data for instance of SWCom.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodname</em>&nbsp;</td><td>
+Internal name for module </td></tr>
+<tr><td valign=top><em>imoddesc</em>&nbsp;</td><td>
+Name to display to user for module </td></tr>
+<tr><td valign=top><em>idisp</em>&nbsp;</td><td>
+Display object to use for displaying </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swcom_8cpp-source.html#l00017">17</a> of file <a class="el" href="swcom_8cpp-source.html">swcom.cpp</a>.
+<p>
+References <a class="el" href="swcom_8h-source.html#l00044">CreateKey</a>(), and <a class="el" href="swmodule_8h-source.html#l00077">SWModule::key</a>.
+<p>
+<div class="fragment"><pre>00017 : <a class="code" href="class_s_w_module.html#a0">SWModule</a>(imodname, imoddesc, idisp, <font class="stringliteral">"Commentaries"</font>, enc, dir, mark, ilang)
+00018 {
+00019 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00020 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_com.html#a2">CreateKey</a>();
+00021 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a2" doxytag="SWCom::CreateKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="class_s_w_key.html">SWKey</a>* SWCom::CreateKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Allocates a key of specific type for module The different reimplementatiosn of <a class="el" href="class_s_w_module.html">SWModule</a> (e.g.
+<p>
+<a class="el" href="class_s_w_text.html">SWText</a>) support <a class="el" href="class_s_w_key.html">SWKey</a> implementations, which support special. This functions returns a <a class="el" href="class_s_w_key.html">SWKey</a> object which works with the current implementation of <a class="el" href="class_s_w_module.html">SWModule</a>. For example for the <a class="el" href="class_s_w_text.html">SWText</a> class it returns a <a class="el" href="class_verse_key.html">VerseKey</a> object. <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_verse_key.html">VerseKey</a>, <a class="el" href="class_list_key.html">ListKey</a>, <a class="el" href="class_s_w_text.html">SWText</a>, <a class="el" href="class_s_w_l_d.html">SWLD</a>, SWCom </dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to allocated key </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_module.html#a26">SWModule</a>.
+<p>
+Definition at line <a class="el" href="swcom_8h-source.html#l00044">44</a> of file <a class="el" href="swcom_8h-source.html">swcom.h</a>.
+<p>
+Referenced by <a class="el" href="swcom_8cpp-source.html#l00017">SWCom</a>().
+<p>
+<div class="fragment"><pre>00045 {
+00046 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>();
+00047 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swcom_8h-source.html">swcom.h</a><li><a class="el" href="swcom_8cpp-source.html">swcom.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_com__coll__graph.png b/doc/api-documentation/html/class_s_w_com__coll__graph.png
new file mode 100644
index 0000000..4de2e8f
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_com__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_com__inherit__graph.png b/doc/api-documentation/html/class_s_w_com__inherit__graph.png
new file mode 100644
index 0000000..5d3aca0
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_com__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_config-members.html b/doc/api-documentation/html/class_s_w_config-members.html
new file mode 100644
index 0000000..a040b64
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_config-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWConfig Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_config.html">SWConfig</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_config.html#m0">filename</a></td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getline</b>(FILE *fp, string &amp;line) (defined in <a class="el" href="class_s_w_config.html">SWConfig</a>)</td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_config.html#a2">Load</a>()</td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_config.html#a4">operator+=</a>(SWConfig &amp;addFrom)</td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_config.html#a5">operator[]</a>(const char *section)</td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_config.html#a3">Save</a>()</td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_config.html#m1">Sections</a></td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_config.html#a0">SWConfig</a>(const char *ifilename)</td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWConfig</b>() (defined in <a class="el" href="class_s_w_config.html">SWConfig</a>)</td><td><a class="el" href="class_s_w_config.html">SWConfig</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_config.html b/doc/api-documentation/html/class_s_w_config.html
new file mode 100644
index 0000000..2e0bfaa
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_config.html
@@ -0,0 +1,216 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWConfig class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWConfig Class Reference</h1>The class to read and save settings using a file on disk.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swconfig_8h-source.html">swconfig.h</a>&gt;</code>
+<p>
+<a href="class_s_w_config-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_config.html#a0">SWConfig</a> (const char *ifilename)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Constructor of SWConfig.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWConfig::~SWConfig"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWConfig</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="SWConfig::Load"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_config.html#a2">Load</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Load from disk Load the contzent from disk.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="SWConfig::Save"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_config.html#a3">Save</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Save to disk Save the content of this config object to disk.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWConfig &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_config.html#a4">operator+=</a> (SWConfig &amp;addFrom)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Merges the values of addFrom.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual ConfigEntMap &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_config.html#a5">operator[]</a> (const char *section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Get a section This is an easy way to get and store config values.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="m0" doxytag="SWConfig::filename"></a>
+string&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_config.html#m0">filename</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The filename used by this SWConfig object.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="m1" doxytag="SWConfig::Sections"></a>
+SectionMap&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_config.html#m1">Sections</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Map of available sections The map of available sections.</em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="SWConfig::getline"></a>
+char&nbsp;</td><td valign=bottom><b>getline</b> (FILE *fp, string &amp;line)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The class to read and save settings using a file on disk.
+<p>
+
+<p>
+Definition at line <a class="el" href="swconfig_8h-source.html#l00044">44</a> of file <a class="el" href="swconfig_8h-source.html">swconfig.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWConfig::SWConfig"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWConfig::SWConfig </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ifilename</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor of SWConfig.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ifilename</em>&nbsp;</td><td>
+The file, which should be used for this config. </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swconfig_8cpp-source.html#l00027">27</a> of file <a class="el" href="swconfig_8cpp-source.html">swconfig.cpp</a>.
+<p>
+References <a class="el" href="swconfig_8h-source.html#l00052">filename</a>, and <a class="el" href="swconfig_8cpp-source.html#l00064">Load</a>().
+<p>
+<div class="fragment"><pre>00027 {
+00028 <a class="code" href="class_s_w_config.html#m0">filename</a> = ifilename;
+00029 <a class="code" href="class_s_w_config.html#a2">Load</a>();
+00030 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a4" doxytag="SWConfig::operator+="></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWConfig &amp; SWConfig::operator+= </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWConfig &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>addFrom</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Merges the values of addFrom.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>The</em>&nbsp;</td><td>
+config which values should be merged to this config object. Already existing values will be overwritten. </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swconfig_8cpp-source.html#l00134">134</a> of file <a class="el" href="swconfig_8cpp-source.html">swconfig.cpp</a>.
+<p>
+References <a class="el" href="swconfig_8h-source.html#l00056">Sections</a>.
+<p>
+<div class="fragment"><pre>00135 {
+00136
+00137 SectionMap::iterator section;
+00138 ConfigEntMap::iterator entry, start, end;
+00139
+00140 <font class="keywordflow">for</font> (section = addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>.begin(); section != addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>.end(); section++) {
+00141 <font class="keywordflow">for</font> (entry = (*section).second.begin(); entry != (*section).second.end(); entry++) {
+00142 start = <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].lower_bound(entry-&gt;first);
+00143 end = <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].upper_bound(entry-&gt;first);
+00144 <font class="keywordflow">if</font> (start != end) {
+00145 <font class="keywordflow">if</font> (((++start) != end)
+00146 || ((++(addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].lower_bound(entry-&gt;first))) != addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].upper_bound(entry-&gt;first))) {
+00147 <font class="keywordflow">for</font> (--start; start != end; start++) {
+00148 <font class="keywordflow">if</font> (!strcmp(start-&gt;second.c_str(), entry-&gt;second.c_str()))
+00149 <font class="keywordflow">break</font>;
+00150 }
+00151 <font class="keywordflow">if</font> (start == end)
+00152 <a class="code" href="class_s_w_config.html#m1">Sections</a>[(*section).first].insert(ConfigEntMap::value_type((*entry).first, (*entry).second));
+00153 }
+00154 <font class="keywordflow">else</font> <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first][entry-&gt;first.c_str()] = entry-&gt;second.c_str();
+00155 }
+00156 <font class="keywordflow">else</font> <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first][entry-&gt;first.c_str()] = entry-&gt;second.c_str();
+00157 }
+00158 }
+00159 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00160 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a5" doxytag="SWConfig::operator[]"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> ConfigEntMap &amp; SWConfig::operator[] </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>section</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a section This is an easy way to get and store config values.
+<p>
+The following will work:<br>
+
+<p>
+<div class="fragment"><pre> <a class="code" href="class_s_w_config.html">SWConfig</a> config(<font class="stringliteral">"/home/user/.setttings"</font>);
+ config[<font class="stringliteral">"Colors"</font>][<font class="stringliteral">"Background"</font>] = <font class="stringliteral">"red"</font>;
+</pre></div>
+<p>
+Definition at line <a class="el" href="swconfig_8cpp-source.html#l00163">163</a> of file <a class="el" href="swconfig_8cpp-source.html">swconfig.cpp</a>.
+<p>
+References <a class="el" href="swconfig_8h-source.html#l00056">Sections</a>.
+<p>
+<div class="fragment"><pre>00163 {
+00164 <font class="keywordflow">return</font> <a class="code" href="class_s_w_config.html#m1">Sections</a>[section];
+00165 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swconfig_8h-source.html">swconfig.h</a><li><a class="el" href="swconfig_8cpp-source.html">swconfig.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_display-members.html b/doc/api-documentation/html/class_s_w_display-members.html
new file mode 100644
index 0000000..bb51b02
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_display-members.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWDisplay Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_display.html">SWDisplay</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>classdef</b> (defined in <a class="el" href="class_s_w_display.html">SWDisplay</a>)</td><td><a class="el" href="class_s_w_display.html">SWDisplay</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_display.html#a1">Display</a>(SWModule &amp;imodule)</td><td><a class="el" href="class_s_w_display.html">SWDisplay</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWDisplay</b>() (defined in <a class="el" href="class_s_w_display.html">SWDisplay</a>)</td><td><a class="el" href="class_s_w_display.html">SWDisplay</a></td><td><code> [inline]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_display.html b/doc/api-documentation/html/class_s_w_display.html
new file mode 100644
index 0000000..55ba4b2
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_display.html
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWDisplay class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWDisplay Class Reference</h1>swdisp is the basis for all types of displays (e.g.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swdisp_8h-source.html">swdisp.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWDisplay:<p><center><img src="class_s_w_display__inherit__graph.png" border="0" usemap="#_s_w_display__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_display__inherit__map">
+<area href="class_s_w_object.html" shape="rect" coords="15,15,87,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWDisplay:<p><center><img src="class_s_w_display__coll__graph.png" border="0" usemap="#_s_w_display__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_display__coll__map">
+<area href="class_s_w_object.html" shape="rect" coords="122,105,194,124" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="51,15,115,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_display-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="SWDisplay::SWDisplay"></a>
+&nbsp;</td><td valign=bottom><b>SWDisplay</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_display.html#a1">Display</a> (<a class="el" href="class_s_w_module.html">SWModule</a> &amp;imodule)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>casts a module to a character pointer and displays it to raw output (overriden for different display types and module types if necessary).</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="SWDisplay::classdef"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;</td><td valign=bottom><b>classdef</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+swdisp is the basis for all types of displays (e.g.
+<p>
+raw textout, curses, xwindow, etc.)
+<p>
+
+<p>
+Definition at line <a class="el" href="swdisp_8h-source.html#l00034">34</a> of file <a class="el" href="swdisp_8h-source.html">swdisp.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="a1" doxytag="SWDisplay::Display"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWDisplay::Display </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>imodule</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+casts a module to a character pointer and displays it to raw output (overriden for different display types and module types if necessary).
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodule</em>&nbsp;</td><td>
+module to display </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+error status </dl>
+<p>
+Definition at line <a class="el" href="swdisp_8cpp-source.html#l00023">23</a> of file <a class="el" href="swdisp_8cpp-source.html">swdisp.cpp</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00252">SWModule::Display</a>().
+<p>
+<div class="fragment"><pre>00024 {
+00025 cout &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *)imodule;
+00026 <font class="keywordflow">return</font> 0;
+00027 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swdisp_8h-source.html">swdisp.h</a><li><a class="el" href="swdisp_8cpp-source.html">swdisp.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_display__coll__graph.png b/doc/api-documentation/html/class_s_w_display__coll__graph.png
new file mode 100644
index 0000000..5e41e8c
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_display__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_display__inherit__graph.png b/doc/api-documentation/html/class_s_w_display__inherit__graph.png
new file mode 100644
index 0000000..adb5d9e
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_display__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_gen_book-members.html b/doc/api-documentation/html/class_s_w_gen_book-members.html
new file mode 100644
index 0000000..4151580
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_gen_book-members.html
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWGenBook Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_gen_book.html">SWGenBook</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a45">AddEncodingFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a54">AddOptionFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a51">AddRawFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a41">AddRenderFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a49">AddStripFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>config</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_gen_book.html#a2">CreateKey</a>()=0</td><td><a class="el" href="class_s_w_gen_book.html">SWGenBook</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d1">createModule</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>createSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a35">deleteEntry</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a16">Description</a>(const char *imoddesc=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>direction</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a18">Direction</a>(signed char newdir=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n15">disp</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a14">Disp</a>(SWDisplay *idisp=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a13">Display</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>encoding</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a19">Encoding</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a48">encodingFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n22">encodingFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entkeytxt</b> (defined in <a class="el" href="class_s_w_gen_book.html">SWGenBook</a>)</td><td><a class="el" href="class_s_w_gen_book.html">SWGenBook</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entryAttributes</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybuf</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybufallocsize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrySize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a2">Error</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a52">filterBuffer</a>(FilterList *filters, char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>flush</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfig</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfigEntry</b>(const char *key) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a7">getEntrySize</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a28">getRawEntry</a>()=0</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getSkipConsecutiveLinks</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>hasSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>isProcessEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a25">isSearchOptimallySupported</a>(const char *istr, int searchType, int flags, SWKey *scope)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a3">isUnicode</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a31">isWritable</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a10">Key</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a11">Key</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n6">key</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a12">KeyText</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a21">Lang</a>(const char *imodlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>lastAccess</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>listkey</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>markup</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a20">Markup</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>moddesc</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modlang</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modname</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modtype</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a15">Name</a>(const char *imodname=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d0">nullPercent</a>(char percent, void *userData)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a27">operator const char *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a29">operator SWKey &amp;</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a30">operator SWKey *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a38">operator++</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a37">operator+=</a>(int increment)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a39">operator--</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a36">operator-=</a>(int decrement)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a33">operator&lt;&lt;</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a34">operator&lt;&lt;</a>(const SWKey *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a40">operator=</a>(SW_POSITION p)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a55">optionFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n21">optionFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ownConfig</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>procEntAttr</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>processEntryAttributes</b>(bool val) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>rawdisp</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a53">rawFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n19">rawFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a46">RemoveEncodingFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a42">RemoveRenderFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a44">renderFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n20">renderFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a57">RenderText</a>(char *buf=0, int len=-1, bool render=true)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a59">RenderText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a47">ReplaceEncodingFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a43">ReplaceRenderFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resourceConsumption</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a22">Search</a>(const char *istr, int searchType=0, int flags=0, SWKey *scope=0, bool *justCheckIfSupported=0, void(*percent)(char, void *)=&amp;nullPercent, void *percentUserData=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setConfig</b>(ConfigEntMap *config) (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a32">setentry</a>(const char *inbuf, long len)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a8">SetKey</a>(const SWKey *ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a9">SetKey</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a60">setSkipConsecutiveLinks</a>(bool val)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>skipConsecutiveLinks</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a50">stripFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n18">stripFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a56">StripText</a>(char *buf=0, int len=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a58">StripText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_gen_book.html#a0">SWGenBook</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *ilang=0)</td><td><a class="el" href="class_s_w_gen_book.html">SWGenBook</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a0">SWModule</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, char *imodtype=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *modlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#m0">terminateSearch</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a17">Type</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWGenBook</b>() (defined in <a class="el" href="class_s_w_gen_book.html">SWGenBook</a>)</td><td><a class="el" href="class_s_w_gen_book.html">SWGenBook</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a1">~SWModule</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_gen_book.html b/doc/api-documentation/html/class_s_w_gen_book.html
new file mode 100644
index 0000000..9756a61
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_gen_book.html
@@ -0,0 +1,175 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWGenBook class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWGenBook Class Reference</h1>the basis for all types of Lexicon and Dictionary modules (hence the 'LD').
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swgenbook_8h-source.html">swgenbook.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWGenBook:<p><center><img src="class_s_w_gen_book__inherit__graph.png" border="0" usemap="#_s_w_gen_book__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_gen_book__inherit__map">
+<area href="class_s_w_module.html" shape="rect" coords="21,15,95,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWGenBook:<p><center><img src="class_s_w_gen_book__coll__graph.png" border="0" usemap="#_s_w_gen_book__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_gen_book__coll__map">
+<area href="class_s_w_module.html" shape="rect" coords="193,391,267,410" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,294,129,313" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="122,197,178,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,125" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="273,197,347,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="145,15,209,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_gen_book-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_gen_book.html#a0">SWGenBook</a> (const char *imodname=0, const char *imoddesc=0, <a class="el" href="class_s_w_display.html">SWDisplay</a> *idisp=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *ilang=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Initializes data for instance of <a class="el" href="class_s_w_l_d.html">SWLD</a>.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWGenBook::~SWGenBook"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWGenBook</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_gen_book.html#a2">CreateKey</a> ()=0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Allocates a key of specific type for module The different reimplementatiosn of <a class="el" href="class_s_w_module.html">SWModule</a> (e.g.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="SWGenBook::entkeytxt"></a>
+char *&nbsp;</td><td valign=bottom><b>entkeytxt</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+the basis for all types of Lexicon and Dictionary modules (hence the 'LD').
+<p>
+
+<p>
+Definition at line <a class="el" href="swgenbook_8h-source.html#l00034">34</a> of file <a class="el" href="swgenbook_8h-source.html">swgenbook.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWGenBook::SWGenBook"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWGenBook::SWGenBook </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imodname</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imoddesc</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>idisp</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextEncoding&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>encoding</em> = ENC_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextDirection&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>dir</em> = DIRECTION_LTR, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextMarkup&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>markup</em> = FMT_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>ilang</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Initializes data for instance of <a class="el" href="class_s_w_l_d.html">SWLD</a>.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodname</em>&nbsp;</td><td>
+Internal name for module </td></tr>
+<tr><td valign=top><em>imoddesc</em>&nbsp;</td><td>
+Name to display to user for module </td></tr>
+<tr><td valign=top><em>idisp</em>&nbsp;</td><td>
+Display object to use for displaying </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swgenbook_8cpp-source.html#l00017">17</a> of file <a class="el" href="swgenbook_8cpp-source.html">swgenbook.cpp</a>.
+<p>
+<div class="fragment"><pre>00017 : <a class="code" href="class_s_w_module.html#a0">SWModule</a>(imodname, imoddesc, idisp, <font class="stringliteral">"Generic Books"</font>, enc, dir, mark, ilang) {
+00018 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a2" doxytag="SWGenBook::CreateKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="class_s_w_key.html">SWKey</a>* SWGenBook::CreateKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Allocates a key of specific type for module The different reimplementatiosn of <a class="el" href="class_s_w_module.html">SWModule</a> (e.g.
+<p>
+<a class="el" href="class_s_w_text.html">SWText</a>) support <a class="el" href="class_s_w_key.html">SWKey</a> implementations, which support special. This functions returns a <a class="el" href="class_s_w_key.html">SWKey</a> object which works with the current implementation of <a class="el" href="class_s_w_module.html">SWModule</a>. For example for the <a class="el" href="class_s_w_text.html">SWText</a> class it returns a <a class="el" href="class_verse_key.html">VerseKey</a> object. <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_verse_key.html">VerseKey</a>, <a class="el" href="class_list_key.html">ListKey</a>, <a class="el" href="class_s_w_text.html">SWText</a>, <a class="el" href="class_s_w_l_d.html">SWLD</a>, <a class="el" href="class_s_w_com.html">SWCom</a> </dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to allocated key </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_module.html#a26">SWModule</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swgenbook_8h-source.html">swgenbook.h</a><li><a class="el" href="swgenbook_8cpp-source.html">swgenbook.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_gen_book__coll__graph.png b/doc/api-documentation/html/class_s_w_gen_book__coll__graph.png
new file mode 100644
index 0000000..a2703a1
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_gen_book__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_gen_book__inherit__graph.png b/doc/api-documentation/html/class_s_w_gen_book__inherit__graph.png
new file mode 100644
index 0000000..7c3aa48
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_gen_book__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_input_method-members.html b/doc/api-documentation/html/class_s_w_input_method-members.html
new file mode 100644
index 0000000..76860a5
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_input_method-members.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWInputMethod Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_input_method.html">SWInputMethod</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>clearState</b>() (defined in <a class="el" href="class_s_w_input_method.html">SWInputMethod</a>)</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getState</b>() (defined in <a class="el" href="class_s_w_input_method.html">SWInputMethod</a>)</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setState</b>(int state) (defined in <a class="el" href="class_s_w_input_method.html">SWInputMethod</a>)</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>state</b> (defined in <a class="el" href="class_s_w_input_method.html">SWInputMethod</a>)</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_input_method.html#a0">SWInputMethod</a>()</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>translate</b>(char in)=0 (defined in <a class="el" href="class_s_w_input_method.html">SWInputMethod</a>)</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWInputMethod</b>() (defined in <a class="el" href="class_s_w_input_method.html">SWInputMethod</a>)</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_input_method.html b/doc/api-documentation/html/class_s_w_input_method.html
new file mode 100644
index 0000000..8f3b0d3
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_input_method.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWInputMethod class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWInputMethod Class Reference</h1>Title: Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swinputmeth_8h-source.html">swinputmeth.h</a>&gt;</code>
+<p>
+<a href="class_s_w_input_method-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_input_method.html#a0">SWInputMethod</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Title: Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWInputMethod::~SWInputMethod"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWInputMethod</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="SWInputMethod::translate"></a>
+virtual int *&nbsp;</td><td valign=bottom><b>translate</b> (char in)=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="SWInputMethod::getState"></a>
+virtual int&nbsp;</td><td valign=bottom><b>getState</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="SWInputMethod::clearState"></a>
+virtual void&nbsp;</td><td valign=bottom><b>clearState</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="b0" doxytag="SWInputMethod::setState"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setState</b> (int state)</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="SWInputMethod::state"></a>
+int&nbsp;</td><td valign=bottom><b>state</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Title: Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:.
+<p>
+<dl compact><dt><b>
+Author: </b><dd>
+Troy A. Griffitts </dl><dl compact><dt><b>
+Version: </b><dd>
+1.0 </dl>
+<p>
+
+<p>
+Definition at line <a class="el" href="swinputmeth_8h-source.html#l00013">13</a> of file <a class="el" href="swinputmeth_8h-source.html">swinputmeth.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWInputMethod::SWInputMethod"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWInputMethod::SWInputMethod </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Title: Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:.
+<p>
+<dl compact><dt><b>
+Author: </b><dd>
+Troy A. Griffitts </dl><dl compact><dt><b>
+Version: </b><dd>
+1.0 </dl>
+<p>
+Definition at line <a class="el" href="swinputmeth_8cpp-source.html#l00012">12</a> of file <a class="el" href="swinputmeth_8cpp-source.html">swinputmeth.cpp</a>.
+<p>
+<div class="fragment"><pre>00012 {
+00013 state = 0;
+00014 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swinputmeth_8h-source.html">swinputmeth.h</a><li><a class="el" href="swinputmeth_8cpp-source.html">swinputmeth.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_key-members.html b/doc/api-documentation/html/class_s_w_key-members.html
new file mode 100644
index 0000000..61f2564
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_key-members.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWKey Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_key.html">SWKey</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>classdef</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a3">clone</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a11">compare</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a8">copyFrom</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a14">decrement</a>(int steps=1)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a12">equals</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a6">Error</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getShortText</b>() const (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a9">getText</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a15">increment</a>(int steps=1)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>index</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a17">Index</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Index</b>(long iindex) (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>init</b>() (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>keytext</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>persist</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a4">Persist</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a5">Persist</a>(signed char ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setPosition</b>(SW_POSITION) (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a7">setText</a>(const char *ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a0">SWKey</a>(const char *ikey=0)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a1">SWKey</a>(SWKey const &amp;k)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Traversable</b>() (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>userData</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a2">~SWKey</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_key.html b/doc/api-documentation/html/class_s_w_key.html
new file mode 100644
index 0000000..3287bff
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_key.html
@@ -0,0 +1,732 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWKey class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWKey Class Reference</h1>SWKey is the basis for all types of keys for indexing into modules (e.g.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swkey_8h-source.html">swkey.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWKey:<p><center><img src="class_s_w_key__inherit__graph.png" border="0" usemap="#_s_w_key__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_key__inherit__map">
+<area href="class_list_key.html" shape="rect" coords="14,154,67,173" alt="">
+<area href="class_str_key.html" shape="rect" coords="91,154,142,173" alt="">
+<area href="class_tree_key.html" shape="rect" coords="166,154,227,173" alt="">
+<area href="class_verse_key.html" shape="rect" coords="251,154,321,173" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="121,15,193,34" alt="">
+<area href="class_tree_key_idx.html" shape="rect" coords="158,223,235,242" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWKey:<p><center><img src="class_s_w_key__coll__graph.png" border="0" usemap="#_s_w_key__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_key__coll__map">
+<area href="class_s_w_object.html" shape="rect" coords="122,105,194,124" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="51,15,115,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_key-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a0">SWKey</a> (const char *ikey=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>initializes instance of SWKey.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a1">SWKey</a> (SWKey const &amp;k)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Copy Constructor.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="SWKey::~SWKey"></a>
+virtual&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a2">~SWKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Destructor, cleans up this instance of SWKey.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWKey *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a3">clone</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Returns a copy of this SWKey object.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a4">Persist</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets whether this object itself persists within a module that it was used to SetKey or just a copy.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a5">Persist</a> (signed char ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Set/gets whether this object itself persists within a module that it was used to SetKey or just a copy.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a6">Error</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets and clears error status.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a7">setText</a> (const char *ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this SWKey to a character string.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a8">copyFrom</a> (const SWKey &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this SWKey to another SWKey object.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a9" doxytag="SWKey::getText"></a>
+virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a9">getText</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns text key if (char *) cast is requested.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a10" doxytag="SWKey::getShortText"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getShortText</b> () const</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a11">compare</a> (const SWKey &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a12">equals</a> (const SWKey &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a13" doxytag="SWKey::setPosition"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setPosition</b> (SW_POSITION)</td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a14">decrement</a> (int steps=1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Decrements key a number of entries.</em> <a href="#a14">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a15">increment</a> (int steps=1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Increments key a number of entries.</em> <a href="#a15">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a16" doxytag="SWKey::Traversable"></a>
+virtual char&nbsp;</td><td valign=bottom><b>Traversable</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual long&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_key.html#a17">Index</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Use this function to get te current position withing a module.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a18" doxytag="SWKey::Index"></a>
+virtual long&nbsp;</td><td valign=bottom><b>Index</b> (long iindex)</td></tr>
+<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="m0" doxytag="SWKey::userData"></a>
+void *&nbsp;</td><td valign=bottom><b>userData</b></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="SWKey::keytext"></a>
+char *&nbsp;</td><td valign=bottom><b>keytext</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n1" doxytag="SWKey::persist"></a>
+char&nbsp;</td><td valign=bottom><b>persist</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n2" doxytag="SWKey::error"></a>
+char&nbsp;</td><td valign=bottom><b>error</b></td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="SWKey::init"></a>
+void&nbsp;</td><td valign=bottom><b>init</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="SWKey::index"></a>
+long&nbsp;</td><td valign=bottom><b>index</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="SWKey::classdef"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;</td><td valign=bottom><b>classdef</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+SWKey is the basis for all types of keys for indexing into modules (e.g.
+<p>
+verse, word, place, etc.)
+<p>
+
+<p>
+Definition at line <a class="el" href="swkey_8h-source.html#l00076">76</a> of file <a class="el" href="swkey_8h-source.html">swkey.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWKey::SWKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWKey::SWKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+initializes instance of SWKey.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+text key </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00020">20</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+Referenced by <a class="el" href="swkey_8cpp-source.html#l00045">clone</a>().
+<p>
+<div class="fragment"><pre>00021 {
+00022 index = 0;
+00023 persist = 0;
+00024 keytext = 0;
+00025 error = 0;
+00026 stdstr(&amp;keytext, ikey);
+00027 init();
+00028 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a1" doxytag="SWKey::SWKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWKey::SWKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWKey const &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>k</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy Constructor.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>The</em>&nbsp;</td><td>
+SWKey object to copy. </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00030">30</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+References <a class="el" href="swkey_8h-source.html#l00084">error</a>, <a class="el" href="swkey_8h-source.html#l00077">index</a>, <a class="el" href="swkey_8h-source.html#l00082">keytext</a>, <a class="el" href="swkey_8h-source.html#l00083">persist</a>, and <a class="el" href="swkey_8h-source.html#l00089">userData</a>.
+<p>
+<div class="fragment"><pre>00031 {
+00032 index = k.index;
+00033 persist = k.persist;
+00034 userData = k.userData;
+00035 keytext = 0;
+00036 error = k.error;
+00037 stdstr(&amp;keytext, k.keytext);
+00038 init();
+00039 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a3" doxytag="SWKey::clone"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWKey * SWKey::clone </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns a copy of this SWKey object.
+<p>
+This is useful to get a 1:1 copy of an SWKey based object. <dl compact><dt><b>
+Returns: </b><dd>
+SWKey </dl>
+<p>
+Reimplemented in <a class="el" href="class_list_key.html#a3">ListKey</a>, and <a class="el" href="class_verse_key.html#a10">VerseKey</a>.
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00045">45</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00020">SWKey</a>().
+<p>
+Referenced by <a class="el" href="listkey_8cpp-source.html#l00087">ListKey::copyFrom</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00391">SWModule::Search</a>().
+<p>
+<div class="fragment"><pre>00046 {
+00047 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_s_w_key.html#a0">SWKey</a>(*<font class="keyword">this</font>);
+00048 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a11" doxytag="SWKey::compare"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int SWKey::compare </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const SWKey &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+key to compare with this one </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+&gt;0 if this key is greater than compare key; &lt;0 if this key is smaller than compare key; 0 if the keys are the same </dl>
+<p>
+Reimplemented in <a class="el" href="class_tree_key.html#a22">TreeKey</a>, <a class="el" href="class_tree_key_idx.html#a28">TreeKeyIdx</a>, and <a class="el" href="class_verse_key.html#a38">VerseKey</a>.
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00151">151</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+Referenced by <a class="el" href="treekeyidx_8cpp-source.html#l00520">TreeKeyIdx::compare</a>().
+<p>
+<div class="fragment"><pre>00152 {
+00153 <font class="keywordflow">return</font> strcmp((<font class="keyword">const</font> <font class="keywordtype">char</font> *)*<font class="keyword">this</font>, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)ikey);
+00154 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a8" doxytag="SWKey::copyFrom"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWKey::copyFrom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const SWKey &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this SWKey to another SWKey object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+other swkey object </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented in <a class="el" href="class_list_key.html#a12">ListKey</a>, <a class="el" href="class_tree_key_idx.html#a20">TreeKeyIdx</a>, and <a class="el" href="class_verse_key.html#a14">VerseKey</a>.
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00126">126</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00115">setText</a>().
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l00822">VerseKey::copyFrom</a>(), <a class="el" href="treekeyidx_8cpp-source.html#l00494">TreeKeyIdx::copyFrom</a>(), and <a class="el" href="listkey_8h-source.html#l00090">ListKey::copyFrom</a>().
+<p>
+<div class="fragment"><pre>00126 {
+00127 <font class="comment">// not desirable Persist(ikey.Persist());</font>
+00128 <a class="code" href="class_s_w_key.html#a7">setText</a>((<font class="keyword">const</font> <font class="keywordtype">char</font> *)ikey);
+00129 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a14" doxytag="SWKey::decrement"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWKey::decrement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>steps</em> = 1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Decrements key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>steps</em>&nbsp;</td><td>
+Number of entries to jump backward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented in <a class="el" href="class_list_key.html#a14">ListKey</a>, <a class="el" href="class_tree_key.html#a23">TreeKey</a>, <a class="el" href="class_tree_key_idx.html#a29">TreeKeyIdx</a>, and <a class="el" href="class_verse_key.html#a17">VerseKey</a>.
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00194">194</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+<div class="fragment"><pre>00194 {
+00195 error = KEYERR_OUTOFBOUNDS;
+00196 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a12" doxytag="SWKey::equals"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool SWKey::equals </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const SWKey &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+key to compare with this one </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+true if the keys are the same </dl>
+<p>
+Definition at line <a class="el" href="swkey_8h-source.html#l00167">167</a> of file <a class="el" href="swkey_8h-source.html">swkey.h</a>.
+<p>
+<div class="fragment"><pre>00167 { <font class="keywordflow">return</font> !<a class="code" href="class_s_w_key.html#a11">compare</a>(ikey); }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a6" doxytag="SWKey::Error"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWKey::Error </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets and clears error status.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+error status </dl>
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00100">100</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l00941">VerseKey::decrement</a>(), <a class="el" href="listkey_8cpp-source.html#l00163">ListKey::decrement</a>(), <a class="el" href="versekey_8cpp-source.html#l00921">VerseKey::increment</a>(), <a class="el" href="listkey_8cpp-source.html#l00140">ListKey::increment</a>(), <a class="el" href="swmodule_8cpp-source.html#l00350">SWModule::operator+=</a>(), <a class="el" href="swmodule_8cpp-source.html#l00367">SWModule::operator-=</a>(), <a class="el" href="swmodule_8cpp-source.html#l00320">SWModule::operator=</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">VerseKey::setPosition</a>(), and <a class="el" href="treekeyidx_8cpp-source.html#l00466">TreeKeyIdx::setText</a>().
+<p>
+<div class="fragment"><pre>00101 {
+00102 <font class="keywordtype">char</font> retval = error;
+00103
+00104 error = 0;
+00105 <font class="keywordflow">return</font> retval;
+00106 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a15" doxytag="SWKey::increment"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWKey::increment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>steps</em> = 1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Increments key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>increment</em>&nbsp;</td><td>
+Number of entries to jump forward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented in <a class="el" href="class_list_key.html#a15">ListKey</a>, <a class="el" href="class_tree_key.html#a24">TreeKey</a>, <a class="el" href="class_tree_key_idx.html#a30">TreeKeyIdx</a>, and <a class="el" href="class_verse_key.html#a18">VerseKey</a>.
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00181">181</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+<div class="fragment"><pre>00181 {
+00182 error = KEYERR_OUTOFBOUNDS;
+00183 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a17" doxytag="SWKey::Index"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual long SWKey::Index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Use this function to get te current position withing a module.
+<p>
+Here's a small example how to use this function and Index(long). This function uses the GerLut module and chooses a random verse from the Bible and returns it. <div class="fragment"><pre> <font class="keyword">const</font> <font class="keywordtype">char</font>* randomVerse() {
+ <a class="code" href="class_verse_key.html">VerseKey</a> vk;
+ <a class="code" href="class_s_w_mgr.html">SWMgr</a> mgr;
+ <a class="code" href="class_locale_mgr.html#p0">LocaleMgr::systemLocaleMgr</a>.<a class="code" href="class_locale_mgr.html#a6">setDefaultLocaleName</a>(<font class="stringliteral">"de"</font>);
+
+ <a class="code" href="class_s_w_module.html">SWModule</a>* module = mgr-&gt;<a class="code" href="class_s_w_mgr.html#m2">Modules</a>(<font class="stringliteral">"GerLut"</font>);
+ srand( time(0) );
+ <font class="keyword">const</font> <font class="keywordtype">double</font> newIndex = (double(rand())/RAND_MAX)*(24108+8224);
+ vk.<a class="code" href="class_verse_key.html#a34">Index</a>(newIndex);
+ module-&gt;<a class="code" href="class_s_w_module.html#a8">SetKey</a>(vk);
+
+ <font class="keywordtype">char</font>* text;
+ sprintf(text, <font class="stringliteral">"%s: %s"</font>,(<font class="keyword">const</font> <font class="keywordtype">char</font>*)vk ,module-&gt;<a class="code" href="class_s_w_module.html#a56">StripText</a>(&amp;vk));
+ <font class="keywordflow">return</font> text;
+</pre></div>
+<p>
+Reimplemented in <a class="el" href="class_list_key.html#a17">ListKey</a>, <a class="el" href="class_tree_key.html#a26">TreeKey</a>, and <a class="el" href="class_verse_key.html#a34">VerseKey</a>.
+<p>
+Definition at line <a class="el" href="swkey_8h-source.html#l00208">208</a> of file <a class="el" href="swkey_8h-source.html">swkey.h</a>.
+<p>
+Referenced by <a class="el" href="listkey_8h-source.html#l00112">ListKey::Index</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00391">SWModule::Search</a>().
+<p>
+<div class="fragment"><pre>00208 { <font class="keywordflow">return</font> index; }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a5" doxytag="SWKey::Persist"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWKey::Persist </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">signed char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set/gets whether this object itself persists within a module that it was used to SetKey or just a copy.
+<p>
+(1 - persists in module; 0 - a copy is attempted<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ipersist</em>&nbsp;</td><td>
+value which to set persist; [-1] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+value of persist </dl>
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00085">85</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+<div class="fragment"><pre>00086 {
+00087 <font class="keywordflow">if</font> (ipersist != -1)
+00088 persist = ipersist;
+00089
+00090 <font class="keywordflow">return</font> persist;
+00091 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a4" doxytag="SWKey::Persist"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWKey::Persist </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets whether this object itself persists within a module that it was used to SetKey or just a copy.
+<p>
+(1 - persists in module; 0 - a copy is attempted
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+value of persist </dl>
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00068">68</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+Referenced by <a class="el" href="swld_8cpp-source.html#l00047">SWLD::KeyText</a>(), <a class="el" href="swmodule_8cpp-source.html#l00606">SWModule::RenderText</a>(), <a class="el" href="swmodule_8cpp-source.html#l00391">SWModule::Search</a>(), <a class="el" href="swmodule_8cpp-source.html#l00272">SWModule::SetKey</a>(), <a class="el" href="swmodule_8cpp-source.html#l00638">SWModule::StripText</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00066">SWModule::~SWModule</a>().
+<p>
+<div class="fragment"><pre>00069 {
+00070 <font class="keywordflow">return</font> persist;
+00071 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a7" doxytag="SWKey::setText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWKey::setText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this SWKey to a character string.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+string to set this key to </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented in <a class="el" href="class_tree_key.html#a19">TreeKey</a>, <a class="el" href="class_tree_key_idx.html#a24">TreeKeyIdx</a>, and <a class="el" href="class_verse_key.html#a13">VerseKey</a>.
+<p>
+Definition at line <a class="el" href="swkey_8cpp-source.html#l00115">115</a> of file <a class="el" href="swkey_8cpp-source.html">swkey.cpp</a>.
+<p>
+Referenced by <a class="el" href="swkey_8cpp-source.html#l00126">copyFrom</a>(), <a class="el" href="versekey_8cpp-source.html#l00231">VerseKey::parse</a>(), and <a class="el" href="versekey_8h-source.html#l00236">VerseKey::setText</a>().
+<p>
+<div class="fragment"><pre>00115 {
+00116 stdstr(&amp;keytext, ikey);
+00117 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swkey_8h-source.html">swkey.h</a><li><a class="el" href="swkey_8cpp-source.html">swkey.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_key__coll__graph.png b/doc/api-documentation/html/class_s_w_key__coll__graph.png
new file mode 100644
index 0000000..aefa33c
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_key__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_key__inherit__graph.png b/doc/api-documentation/html/class_s_w_key__inherit__graph.png
new file mode 100644
index 0000000..c2b2eee
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_key__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_l_d-members.html b/doc/api-documentation/html/class_s_w_l_d-members.html
new file mode 100644
index 0000000..1313e44
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_l_d-members.html
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWLD Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_l_d.html">SWLD</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a45">AddEncodingFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a54">AddOptionFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a51">AddRawFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a41">AddRenderFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a49">AddStripFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>config</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_l_d.html#a2">CreateKey</a>()</td><td><a class="el" href="class_s_w_l_d.html">SWLD</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d1">createModule</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>createSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a35">deleteEntry</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a16">Description</a>(const char *imoddesc=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>direction</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a18">Direction</a>(signed char newdir=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n15">disp</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a14">Disp</a>(SWDisplay *idisp=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a13">Display</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>encoding</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a19">Encoding</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a48">encodingFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n22">encodingFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entkeytxt</b> (defined in <a class="el" href="class_s_w_l_d.html">SWLD</a>)</td><td><a class="el" href="class_s_w_l_d.html">SWLD</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entryAttributes</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybuf</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybufallocsize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrySize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a2">Error</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a52">filterBuffer</a>(FilterList *filters, char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>flush</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfig</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfigEntry</b>(const char *key) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a7">getEntrySize</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a28">getRawEntry</a>()=0</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getSkipConsecutiveLinks</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>hasSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>isProcessEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a25">isSearchOptimallySupported</a>(const char *istr, int searchType, int flags, SWKey *scope)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a3">isUnicode</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a31">isWritable</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a10">Key</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a11">Key</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n6">key</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_l_d.html#a3">KeyText</a>(const char *ikeytext)</td><td><a class="el" href="class_s_w_l_d.html">SWLD</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a21">Lang</a>(const char *imodlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>lastAccess</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>listkey</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>markup</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a20">Markup</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>moddesc</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modlang</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modname</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modtype</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a15">Name</a>(const char *imodname=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d0">nullPercent</a>(char percent, void *userData)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a27">operator const char *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a29">operator SWKey &amp;</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a30">operator SWKey *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a38">operator++</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a37">operator+=</a>(int increment)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a39">operator--</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a36">operator-=</a>(int decrement)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a33">operator&lt;&lt;</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a34">operator&lt;&lt;</a>(const SWKey *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a40">operator=</a>(SW_POSITION p)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a55">optionFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n21">optionFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ownConfig</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>procEntAttr</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>processEntryAttributes</b>(bool val) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>rawdisp</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a53">rawFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n19">rawFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a46">RemoveEncodingFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a42">RemoveRenderFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a44">renderFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n20">renderFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a57">RenderText</a>(char *buf=0, int len=-1, bool render=true)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a59">RenderText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a47">ReplaceEncodingFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a43">ReplaceRenderFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resourceConsumption</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a22">Search</a>(const char *istr, int searchType=0, int flags=0, SWKey *scope=0, bool *justCheckIfSupported=0, void(*percent)(char, void *)=&amp;nullPercent, void *percentUserData=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setConfig</b>(ConfigEntMap *config) (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a32">setentry</a>(const char *inbuf, long len)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a8">SetKey</a>(const SWKey *ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a9">SetKey</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a60">setSkipConsecutiveLinks</a>(bool val)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>skipConsecutiveLinks</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a50">stripFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n18">stripFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a56">StripText</a>(char *buf=0, int len=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a58">StripText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_l_d.html#a0">SWLD</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *ilang=0)</td><td><a class="el" href="class_s_w_l_d.html">SWLD</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a0">SWModule</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, char *imodtype=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *modlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#m0">terminateSearch</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a17">Type</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWLD</b>() (defined in <a class="el" href="class_s_w_l_d.html">SWLD</a>)</td><td><a class="el" href="class_s_w_l_d.html">SWLD</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a1">~SWModule</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_l_d.html b/doc/api-documentation/html/class_s_w_l_d.html
new file mode 100644
index 0000000..b08fb27
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_l_d.html
@@ -0,0 +1,247 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWLD class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWLD Class Reference</h1>the basis for all types of Lexicon and Dictionary modules (hence the 'LD').
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swld_8h-source.html">swld.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWLD:<p><center><img src="class_s_w_l_d__inherit__graph.png" border="0" usemap="#_s_w_l_d__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_l_d__inherit__map">
+<area href="class_s_w_module.html" shape="rect" coords="14,15,89,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWLD:<p><center><img src="class_s_w_l_d__coll__graph.png" border="0" usemap="#_s_w_l_d__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_l_d__coll__map">
+<area href="class_s_w_module.html" shape="rect" coords="193,391,267,410" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,294,129,313" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="122,197,178,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,125" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="273,197,347,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="145,15,209,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_l_d-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_l_d.html#a0">SWLD</a> (const char *imodname=0, const char *imoddesc=0, <a class="el" href="class_s_w_display.html">SWDisplay</a> *idisp=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *ilang=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Initializes data for instance of SWLD.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWLD::~SWLD"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWLD</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_l_d.html#a2">CreateKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Allocates a key of specific type for module The different reimplementatiosn of <a class="el" href="class_s_w_module.html">SWModule</a> (e.g.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_l_d.html#a3">KeyText</a> (const char *ikeytext)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module KeyText, getting from saved text if key is persistent.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="SWLD::entkeytxt"></a>
+char *&nbsp;</td><td valign=bottom><b>entkeytxt</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+the basis for all types of Lexicon and Dictionary modules (hence the 'LD').
+<p>
+
+<p>
+Definition at line <a class="el" href="swld_8h-source.html#l00034">34</a> of file <a class="el" href="swld_8h-source.html">swld.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWLD::SWLD"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWLD::SWLD </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imodname</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imoddesc</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>idisp</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextEncoding&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>encoding</em> = ENC_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextDirection&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>dir</em> = DIRECTION_LTR, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextMarkup&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>markup</em> = FMT_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>ilang</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Initializes data for instance of SWLD.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodname</em>&nbsp;</td><td>
+Internal name for module </td></tr>
+<tr><td valign=top><em>imoddesc</em>&nbsp;</td><td>
+Name to display to user for module </td></tr>
+<tr><td valign=top><em>idisp</em>&nbsp;</td><td>
+Display object to use for displaying </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swld_8cpp-source.html#l00017">17</a> of file <a class="el" href="swld_8cpp-source.html">swld.cpp</a>.
+<p>
+References <a class="el" href="swld_8h-source.html#l00047">CreateKey</a>(), and <a class="el" href="swmodule_8h-source.html#l00077">SWModule::key</a>.
+<p>
+<div class="fragment"><pre>00017 : <a class="code" href="class_s_w_module.html#a0">SWModule</a>(imodname, imoddesc, idisp, <font class="stringliteral">"Lexicons / Dictionaries"</font>, enc, dir, mark, ilang)
+00018 {
+00019 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00020 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_l_d.html#a2">CreateKey</a>();
+00021 entkeytxt = <font class="keyword">new</font> <font class="keywordtype">char</font> [1];
+00022 *entkeytxt = 0;
+00023 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a2" doxytag="SWLD::CreateKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="class_s_w_key.html">SWKey</a>* SWLD::CreateKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Allocates a key of specific type for module The different reimplementatiosn of <a class="el" href="class_s_w_module.html">SWModule</a> (e.g.
+<p>
+<a class="el" href="class_s_w_text.html">SWText</a>) support <a class="el" href="class_s_w_key.html">SWKey</a> implementations, which support special. This functions returns a <a class="el" href="class_s_w_key.html">SWKey</a> object which works with the current implementation of <a class="el" href="class_s_w_module.html">SWModule</a>. For example for the <a class="el" href="class_s_w_text.html">SWText</a> class it returns a <a class="el" href="class_verse_key.html">VerseKey</a> object. <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_verse_key.html">VerseKey</a>, <a class="el" href="class_list_key.html">ListKey</a>, <a class="el" href="class_s_w_text.html">SWText</a>, SWLD, <a class="el" href="class_s_w_com.html">SWCom</a> </dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to allocated key </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_module.html#a26">SWModule</a>.
+<p>
+Definition at line <a class="el" href="swld_8h-source.html#l00047">47</a> of file <a class="el" href="swld_8h-source.html">swld.h</a>.
+<p>
+Referenced by <a class="el" href="swld_8cpp-source.html#l00017">SWLD</a>().
+<p>
+<div class="fragment"><pre>00048 {
+00049 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_str_key.html">StrKey</a> ();
+00050 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a3" doxytag="SWLD::KeyText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWLD::KeyText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikeytext</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module KeyText, getting from saved text if key is persistent.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikeytext</em>&nbsp;</td><td>
+value which to set keytext; [0] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to keytext </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_module.html#a12">SWModule</a>.
+<p>
+Definition at line <a class="el" href="swld_8cpp-source.html#l00047">47</a> of file <a class="el" href="swld_8cpp-source.html">swld.cpp</a>.
+<p>
+References <a class="el" href="class_s_w_module.html#a28">SWModule::getRawEntry</a>(), <a class="el" href="swmodule_8h-source.html#l00077">SWModule::key</a>, <a class="el" href="swmodule_8cpp-source.html#l00303">SWModule::KeyText</a>(), and <a class="el" href="swkey_8cpp-source.html#l00068">SWKey::Persist</a>().
+<p>
+<div class="fragment"><pre>00048 {
+00049 <font class="keywordflow">if</font> (<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>() &amp;&amp; !ikeytext) {
+00050 <a class="code" href="class_s_w_module.html#a28">getRawEntry</a>(); <font class="comment">// force module key to snap to entry</font>
+00051 <font class="keywordflow">return</font> entkeytxt;
+00052 }
+00053 <font class="keywordflow">else</font> <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a12">SWModule::KeyText</a>(ikeytext);
+00054 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swld_8h-source.html">swld.h</a><li><a class="el" href="swld_8cpp-source.html">swld.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_l_d__coll__graph.png b/doc/api-documentation/html/class_s_w_l_d__coll__graph.png
new file mode 100644
index 0000000..5ddae86
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_l_d__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_l_d__inherit__graph.png b/doc/api-documentation/html/class_s_w_l_d__inherit__graph.png
new file mode 100644
index 0000000..a10a1e1
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_l_d__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_locale-members.html b/doc/api-documentation/html/class_s_w_locale-members.html
new file mode 100644
index 0000000..a50ae3f
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_locale-members.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWLocale Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_locale.html">SWLocale</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>BMAX</b> (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>bookAbbrevs</b> (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>books</b> (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>description</b> (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getBookAbbrevs</b>() (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getBooks</b>(char **iBMAX, struct sbook ***ibooks) (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_locale.html#a3">getDescription</a>()</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_locale.html#a2">getName</a>()</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>localeSource</b> (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>lookupTable</b> (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>name</b> (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>operator+=</b>(SWLocale &amp;addFrom) (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWLocale</b>(const char *ifilename) (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>translate</b>(const char *text) (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWLocale</b>() (defined in <a class="el" href="class_s_w_locale.html">SWLocale</a>)</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_locale.html b/doc/api-documentation/html/class_s_w_locale.html
new file mode 100644
index 0000000..2051f26
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_locale.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWLocale class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWLocale Class Reference</h1>SWLocale is used for the localisation of the booknames The SWLocale is a class which holds the information of one language.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swlocale_8h-source.html">swlocale.h</a>&gt;</code>
+<p>
+Collaboration diagram for SWLocale:<p><center><img src="class_s_w_locale__coll__graph.png" border="0" usemap="#_s_w_locale__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_locale__coll__map">
+<area href="class_s_w_config.html" shape="rect" coords="15,15,85,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_locale-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="SWLocale::SWLocale"></a>
+&nbsp;</td><td valign=bottom><b>SWLocale</b> (const char *ifilename)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWLocale::~SWLocale"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWLocale</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_locale.html#a2">getName</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is used to get the name of the languages which this object is handling.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_locale.html#a3">getDescription</a> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="SWLocale::translate"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>translate</b> (const char *text)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="SWLocale::operator+="></a>
+virtual SWLocale &amp;&nbsp;</td><td valign=bottom><b>operator+=</b> (SWLocale &amp;addFrom)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="SWLocale::getBookAbbrevs"></a>
+virtual const struct abbrev *&nbsp;</td><td valign=bottom><b>getBookAbbrevs</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="SWLocale::getBooks"></a>
+virtual void&nbsp;</td><td valign=bottom><b>getBooks</b> (char **iBMAX, struct sbook ***ibooks)</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="SWLocale::lookupTable"></a>
+LookupMap&nbsp;</td><td valign=bottom><b>lookupTable</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="SWLocale::localeSource"></a>
+<a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td><td valign=bottom><b>localeSource</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o2" doxytag="SWLocale::name"></a>
+char *&nbsp;</td><td valign=bottom><b>name</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o3" doxytag="SWLocale::description"></a>
+char *&nbsp;</td><td valign=bottom><b>description</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o4" doxytag="SWLocale::bookAbbrevs"></a>
+abbrev *&nbsp;</td><td valign=bottom><b>bookAbbrevs</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o5" doxytag="SWLocale::BMAX"></a>
+char *&nbsp;</td><td valign=bottom><b>BMAX</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o6" doxytag="SWLocale::books"></a>
+sbook **&nbsp;</td><td valign=bottom><b>books</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+SWLocale is used for the localisation of the booknames The SWLocale is a class which holds the information of one language.
+<p>
+Every language supported by Sword has one SWLocale object, get the name of the Language using <dl compact><dt><b>
+See also: </b><dd>
+getname of this class. Another functions useful for frontend developers is , <a class="el" href="class_s_w_locale.html#a3">getDescription</a>. </dl>
+<p>
+
+<p>
+Definition at line <a class="el" href="swlocale_8h-source.html#l00044">44</a> of file <a class="el" href="swlocale_8h-source.html">swlocale.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="a3" doxytag="SWLocale::getDescription"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWLocale::getDescription </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+The description. A possible example is "German". </dl>
+<p>
+Definition at line <a class="el" href="swlocale_8cpp-source.html#l00091">91</a> of file <a class="el" href="swlocale_8cpp-source.html">swlocale.cpp</a>.
+<p>
+<div class="fragment"><pre>00091 {
+00092 <font class="keywordflow">return</font> description;
+00093 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a2" doxytag="SWLocale::getName"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWLocale::getName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is used to get the name of the languages which this object is handling.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+The name of the managed language. A possible example is "de". </dl>
+<p>
+Definition at line <a class="el" href="swlocale_8cpp-source.html#l00086">86</a> of file <a class="el" href="swlocale_8cpp-source.html">swlocale.cpp</a>.
+<p>
+Referenced by <a class="el" href="localemgr_8cpp-source.html#l00103">LocaleMgr::loadConfigDir</a>().
+<p>
+<div class="fragment"><pre>00086 {
+00087 <font class="keywordflow">return</font> name;
+00088 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swlocale_8h-source.html">swlocale.h</a><li><a class="el" href="swlocale_8cpp-source.html">swlocale.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_locale__coll__graph.png b/doc/api-documentation/html/class_s_w_locale__coll__graph.png
new file mode 100644
index 0000000..5036b1d
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_locale__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_mgr-members.html b/doc/api-documentation/html/class_s_w_mgr-members.html
new file mode 100644
index 0000000..fd93103
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_mgr-members.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWMgr Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_mgr.html">SWMgr</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#b8">AddEncodingFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddGlobalOptions</b>(SWModule *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddLocalOptions</b>(SWModule *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>AddModToConfig</b>(int conffd, const char *fname) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#b11">AddRawFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#b9">AddRenderFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#b10">AddStripFilters</a>(SWModule *module, ConfigEntMap &amp;section)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cipherFilters</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>cleanupFilters</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>commonInit</b>(SWConfig *iconfig, SWConfig *isysconfig, bool autoload, SWFilterMgr *filterMgr) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#m0">config</a></td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>configPath</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>configType</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>CreateMod</b>(string name, string driver, ConfigEntMap &amp;section) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>CreateMods</b>() (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#p0">debug</a></td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>DeleteMods</b>() (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>filterMgr</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>findConfig</b>(char *configType, char **prefixPath, char **configPath) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>gbfplain</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a7">getGlobalOption</a>(const char *option)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a9">getGlobalOptions</a>()</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a8">getGlobalOptionTip</a>(const char *option)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getGlobalOptionValues</b>(const char *option) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>globalConfPath</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>homeConfig</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>init</b>() (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a4">InstallScan</a>(const char *dir)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a5">Load</a>()</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>loadConfigDir</b>(const char *ipath) (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#m2">Modules</a></td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myconfig</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>mysysconfig</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optionFilters</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#m3">prefixPath</a></td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a11">setCipherKey</a>(const char *modName, const char *key)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a6">setGlobalOption</a>(const char *option, const char *value)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a0">SWMgr</a>(SWConfig *iconfig=0, SWConfig *isysconfig=0, bool autoload=true, SWFilterMgr *filterMgr=0)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a1">SWMgr</a>(SWFilterMgr *filterMgr)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a2">SWMgr</a>(const char *iConfigPath, bool autoload=true, SWFilterMgr *filterMgr=0)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>sysconfig</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>thmlplain</b> (defined in <a class="el" href="class_s_w_mgr.html">SWMgr</a>)</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_mgr.html#a3">~SWMgr</a>()</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_mgr.html b/doc/api-documentation/html/class_s_w_mgr.html
new file mode 100644
index 0000000..3740004
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_mgr.html
@@ -0,0 +1,1296 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWMgr class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWMgr Class Reference</h1>SWMgr is the main class of the Sword library.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swmgr_8h-source.html">swmgr.h</a>&gt;</code>
+<p>
+Collaboration diagram for SWMgr:<p><center><img src="class_s_w_mgr__coll__graph.png" border="0" usemap="#_s_w_mgr__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_mgr__coll__map">
+<area href="class_s_w_config.html" shape="rect" coords="14,15,83,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_mgr-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a0">SWMgr</a> (<a class="el" href="class_s_w_config.html">SWConfig</a> *iconfig=0, <a class="el" href="class_s_w_config.html">SWConfig</a> *isysconfig=0, bool autoload=true, SWFilterMgr *filterMgr=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Constructor of SWMgr.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a1">SWMgr</a> (SWFilterMgr *filterMgr)</td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a2">SWMgr</a> (const char *iConfigPath, bool autoload=true, SWFilterMgr *filterMgr=0)</td></tr>
+<tr><td nowrap align=right valign=top>virtual&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a3">~SWMgr</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The destructor of SWMgr.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a4">InstallScan</a> (const char *dir)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Installs a scan for modules in the directory givan as parameter.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual signed char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a5">Load</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Load the modules.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a6">setGlobalOption</a> (const char *option, const char *value)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Set a global option Set a global option using the parameters.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a7">getGlobalOption</a> (const char *option)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gives the value of the given option.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a8">getGlobalOptionTip</a> (const char *option)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gives a description for the given option.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual OptionsList&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a9">getGlobalOptions</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>A list of all availble options with the currently set values.</em> <a href="#a9">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a10" doxytag="SWMgr::getGlobalOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getGlobalOptionValues</b> (const char *option)</td></tr>
+<tr><td nowrap align=right valign=top>virtual signed char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#a11">setCipherKey</a> (const char *modName, const char *key)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets the cipher key for the given module.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Static Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="d0" doxytag="SWMgr::findConfig"></a>
+void&nbsp;</td><td valign=bottom><b>findConfig</b> (char *configType, char **<a class="el" href="class_s_w_mgr.html#m3">prefixPath</a>, char **configPath)</td></tr>
+<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#m0">config</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The global config object.</em> <a href="#m0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="m1" doxytag="SWMgr::sysconfig"></a>
+<a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td><td valign=bottom><b>sysconfig</b></td></tr>
+<tr><td nowrap align=right valign=top>ModMap&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#m2">Modules</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The map of available modules.</em> <a href="#m2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="m3" doxytag="SWMgr::prefixPath"></a>
+char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#m3">prefixPath</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The path to your Sword directory.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="m4" doxytag="SWMgr::configPath"></a>
+char *&nbsp;</td><td valign=bottom><b>configPath</b></td></tr>
+<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#p0">debug</a> = false</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Enable / Disable debug output on runtime Set this to true to get more verbose output of SWMgr at runtime.</em> <a href="#p0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="p1" doxytag="SWMgr::globalConfPath"></a>
+const char *&nbsp;</td><td valign=bottom><b>globalConfPath</b> = "/etc/sword.conf:/usr/local/etc/sword.conf"</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="b0" doxytag="SWMgr::CreateMods"></a>
+void&nbsp;</td><td valign=bottom><b>CreateMods</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="b1" doxytag="SWMgr::CreateMod"></a>
+<a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td><td valign=bottom><b>CreateMod</b> (string name, string driver, ConfigEntMap &amp;section)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b2" doxytag="SWMgr::DeleteMods"></a>
+void&nbsp;</td><td valign=bottom><b>DeleteMods</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="b3" doxytag="SWMgr::init"></a>
+virtual void&nbsp;</td><td valign=bottom><b>init</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="b4" doxytag="SWMgr::AddModToConfig"></a>
+virtual char&nbsp;</td><td valign=bottom><b>AddModToConfig</b> (int conffd, const char *fname)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b5" doxytag="SWMgr::loadConfigDir"></a>
+virtual void&nbsp;</td><td valign=bottom><b>loadConfigDir</b> (const char *ipath)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b6" doxytag="SWMgr::AddGlobalOptions"></a>
+virtual void&nbsp;</td><td valign=bottom><b>AddGlobalOptions</b> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b7" doxytag="SWMgr::AddLocalOptions"></a>
+virtual void&nbsp;</td><td valign=bottom><b>AddLocalOptions</b> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end)</td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#b8">AddEncodingFilters</a> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds the encoding filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".</em> <a href="#b8">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#b9">AddRenderFilters</a> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds the render filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".</em> <a href="#b9">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#b10">AddStripFilters</a> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds the strip filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".</em> <a href="#b10">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_mgr.html#b11">AddRawFilters</a> (<a class="el" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds the raw filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".</em> <a href="#b11">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="SWMgr::filterMgr"></a>
+SWFilterMgr *&nbsp;</td><td valign=bottom><b>filterMgr</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n1" doxytag="SWMgr::myconfig"></a>
+<a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td><td valign=bottom><b>myconfig</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n2" doxytag="SWMgr::mysysconfig"></a>
+<a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td><td valign=bottom><b>mysysconfig</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n3" doxytag="SWMgr::homeConfig"></a>
+<a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td><td valign=bottom><b>homeConfig</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n4" doxytag="SWMgr::configType"></a>
+char&nbsp;</td><td valign=bottom><b>configType</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n5" doxytag="SWMgr::optionFilters"></a>
+FilterMap&nbsp;</td><td valign=bottom><b>optionFilters</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n6" doxytag="SWMgr::cipherFilters"></a>
+FilterMap&nbsp;</td><td valign=bottom><b>cipherFilters</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n7" doxytag="SWMgr::gbfplain"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>gbfplain</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n8" doxytag="SWMgr::thmlplain"></a>
+SWFilter *&nbsp;</td><td valign=bottom><b>thmlplain</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n9" doxytag="SWMgr::cleanupFilters"></a>
+FilterList&nbsp;</td><td valign=bottom><b>cleanupFilters</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n10" doxytag="SWMgr::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="SWMgr::commonInit"></a>
+void&nbsp;</td><td valign=bottom><b>commonInit</b> (<a class="el" href="class_s_w_config.html">SWConfig</a> *iconfig, <a class="el" href="class_s_w_config.html">SWConfig</a> *isysconfig, bool autoload, SWFilterMgr *filterMgr)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+SWMgr is the main class of the Sword library.
+<p>
+SWmgr manages the installed modules, the filters and global options like footnotes or strong numbers. The class SWMgr is the most important class of Sword. It is used to manage the installed modules. It also manages the filters (Render-, Strip- and Rawfilters).
+<p>
+To get the <a class="el" href="class_s_w_module.html">SWModule</a> objects of the instalelled modules use <a class="el" href="class_s_w_mgr.html#m2">Modules</a> for this. <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_s_w_mgr.html#b11">AddRawFilters</a>(), <a class="el" href="class_s_w_mgr.html#b9">AddRenderFilters</a>(), <a class="el" href="class_s_w_mgr.html#b10">AddStripFilters</a>() </dl><dl compact><dt><b>
+Version: </b><dd>
+</dl><dl compact><dt><b>
+Id: </b><dd>
+ swmgr.h,v 1.42 2002/03/22 05:26:34 scribe Exp </dl>
+<p>
+
+<p>
+Definition at line <a class="el" href="swmgr_8h-source.html#l00069">69</a> of file <a class="el" href="swmgr_8h-source.html">swmgr.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWMgr::SWMgr"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWMgr::SWMgr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>iconfig</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_config.html">SWConfig</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>isysconfig</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>autoload</em> = true, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWFilterMgr *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>filterMgr</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor of SWMgr.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>iconfig</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>isysconfig</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em>autoload</em>&nbsp;</td><td>
+If this bool is true the constructor starts loading the installed modules. If you reimplemented SWMgr you can set autoload=false to load the modules with your own reimplemented function. </td></tr>
+<tr><td valign=top><em>filterMgr</em>&nbsp;</td><td>
+an SWFilterMgr subclass to use to manager filters on modules THIS WILL BE DELETED BY SWMgr </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00179">179</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00179 {
+00180 commonInit(iconfig, isysconfig, autoload, filterMgr);
+00181 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a1" doxytag="SWMgr::SWMgr"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWMgr::SWMgr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilterMgr *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>filterMgr</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>filterMgr</em>&nbsp;</td><td>
+an SWFilterMgr subclass to use to manager filters on modules THIS WILL BE DELETED BY SWMgr </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00174">174</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00174 {
+00175 commonInit(0, 0, <font class="keyword">true</font>, filterMgr);
+00176 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a2" doxytag="SWMgr::SWMgr"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWMgr::SWMgr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>iConfigPath</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>autoload</em> = true, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWFilterMgr *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>filterMgr</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>autoload</em>&nbsp;</td><td>
+If this bool is true the constructor starts loading the installed modules. If you reimplemented SWMgr you can set autoload=false to load the modules with your own reimplemented function. </td></tr>
+<tr><td valign=top><em>filterMgr</em>&nbsp;</td><td>
+an SWFilterMgr subclass to use to manager filters on modules THIS WILL BE DELETED BY SWMgr </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00207">207</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+References <a class="el" href="swmgr_8h-source.html#l00145">config</a>, <a class="el" href="swmgr_8cpp-source.html#l00536">Load</a>(), and <a class="el" href="swmgr_8h-source.html#l00176">prefixPath</a>.
+<p>
+<div class="fragment"><pre>00207 {
+00208
+00209 string path;
+00210
+00211 this-&gt;filterMgr = filterMgr;
+00212 <font class="keywordflow">if</font> (filterMgr)
+00213 filterMgr-&gt;setParentMgr(<font class="keyword">this</font>);
+00214
+00215 init();
+00216
+00217 path = iConfigPath;
+00218 <font class="keywordflow">if</font> ((iConfigPath[strlen(iConfigPath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (iConfigPath[strlen(iConfigPath)-1] != <font class="charliteral">'/'</font>))
+00219 path += <font class="stringliteral">"/"</font>;
+00220 <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) {
+00221 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00222 path += <font class="stringliteral">"mods.conf"</font>;
+00223 stdstr(&amp;configPath, path.c_str());
+00224 }
+00225 <font class="keywordflow">else</font> {
+00226 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) {
+00227 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00228 path += <font class="stringliteral">"mods.d"</font>;
+00229 stdstr(&amp;configPath, path.c_str());
+00230 configType = 1;
+00231 }
+00232 }
+00233
+00234 <a class="code" href="class_s_w_mgr.html#m0">config</a> = 0;
+00235 sysconfig = 0;
+00236
+00237 <font class="keywordflow">if</font> (autoload &amp;&amp; configPath)
+00238 <a class="code" href="class_s_w_mgr.html#a5">Load</a>();
+00239 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a3" doxytag="SWMgr::~SWMgr"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWMgr::~SWMgr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The destructor of SWMgr.
+<p>
+This function cleans up the modules and deletes the created object. Destroy the SWMgr at last object in your application, because otherwise you may experience crashes because the <a class="el" href="class_s_w_module.html">SWModule</a> objects become invalid.
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00242">242</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+References <a class="el" href="swmgr_8h-source.html#l00176">prefixPath</a>.
+<p>
+<div class="fragment"><pre>00242 {
+00243
+00244 DeleteMods();
+00245
+00246 <font class="keywordflow">for</font> (FilterList::iterator it = cleanupFilters.begin(); it != cleanupFilters.end(); it++)
+00247 <font class="keyword">delete</font> (*it);
+00248
+00249 <font class="keywordflow">if</font> (homeConfig)
+00250 <font class="keyword">delete</font> homeConfig;
+00251
+00252 <font class="keywordflow">if</font> (myconfig)
+00253 <font class="keyword">delete</font> myconfig;
+00254
+00255 <font class="keywordflow">if</font> (prefixPath)
+00256 <font class="keyword">delete</font> [] <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>;
+00257
+00258 <font class="keywordflow">if</font> (configPath)
+00259 <font class="keyword">delete</font> [] configPath;
+00260
+00261 <font class="keywordflow">if</font> (filterMgr)
+00262 <font class="keyword">delete</font> filterMgr;
+00263 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="b8" doxytag="SWMgr::AddEncodingFilters"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWMgr::AddEncodingFilters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>module</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>ConfigEntMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>section</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds the encoding filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>module</em>&nbsp;</td><td>
+To this module the encoding filter(s) are added </td></tr>
+<tr><td valign=top><em>section</em>&nbsp;</td><td>
+We use this section to get a list of filters we should apply to the module </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00808">808</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00808 {
+00809
+00810 <font class="keywordflow">if</font> (filterMgr)
+00811 filterMgr-&gt;AddEncodingFilters(module, section);
+00812 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="b11" doxytag="SWMgr::AddRawFilters"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWMgr::AddRawFilters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>module</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>ConfigEntMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>section</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds the raw filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>module</em>&nbsp;</td><td>
+To this module the raw filter(s) are added </td></tr>
+<tr><td valign=top><em>section</em>&nbsp;</td><td>
+We use this section to get a list of filters we should apply to the module </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00791">791</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00505">SWModule::AddRawFilter</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00135">SWModule::Name</a>().
+<p>
+<div class="fragment"><pre>00791 {
+00792 string sourceformat, cipherKey;
+00793 ConfigEntMap::iterator entry;
+00794
+00795 cipherKey = ((entry = section.find(<font class="stringliteral">"CipherKey"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00796 <font class="keywordflow">if</font> (!cipherKey.empty()) {
+00797 SWFilter *cipherFilter = <font class="keyword">new</font> CipherFilter(cipherKey.c_str());
+00798 cipherFilters.insert(FilterMap::value_type(module-&gt;<a class="code" href="class_s_w_module.html#a15">Name</a>(), cipherFilter));
+00799 cleanupFilters.push_back(cipherFilter);
+00800 module-&gt;<a class="code" href="class_s_w_module.html#a51">AddRawFilter</a>(cipherFilter);
+00801 }
+00802
+00803 <font class="keywordflow">if</font> (filterMgr)
+00804 filterMgr-&gt;AddRawFilters(module, section);
+00805 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="b9" doxytag="SWMgr::AddRenderFilters"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWMgr::AddRenderFilters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>module</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>ConfigEntMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>section</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds the render filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>module</em>&nbsp;</td><td>
+To this module the render filter(s) are added </td></tr>
+<tr><td valign=top><em>section</em>&nbsp;</td><td>
+We use this section to get a list of filters we should apply to the module </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00815">815</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00815 {
+00816 string sourceformat;
+00817 ConfigEntMap::iterator entry;
+00818
+00819 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00820
+00821 <font class="comment">// Temporary: To support old module types</font>
+00822 <font class="comment">// TODO: Remove at 1.6.0 release?</font>
+00823 <font class="keywordflow">if</font> (sourceformat.empty()) {
+00824 sourceformat = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00825 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"RawGBF"</font>))
+00826 sourceformat = <font class="stringliteral">"GBF"</font>;
+00827 <font class="keywordflow">else</font> sourceformat = <font class="stringliteral">""</font>;
+00828 }
+00829
+00830 <font class="comment">// process module - eg. follows</font>
+00831 <font class="comment">// if (!stricmp(sourceformat.c_str(), "GBF")) {</font>
+00832 <font class="comment">// module-&gt;AddRenderFilter(gbftortf);</font>
+00833 <font class="comment">// }</font>
+00834
+00835 <font class="keywordflow">if</font> (filterMgr)
+00836 filterMgr-&gt;AddRenderFilters(module, section);
+00837
+00838 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="b10" doxytag="SWMgr::AddStripFilters"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWMgr::AddStripFilters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_module.html">SWModule</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>module</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>ConfigEntMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>section</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds the strip filters which are defined in "section" to the <a class="el" href="class_s_w_module.html">SWModule</a> object "module".
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>module</em>&nbsp;</td><td>
+To this module the strip filter(s) are added </td></tr>
+<tr><td valign=top><em>section</em>&nbsp;</td><td>
+We use this section to get a list of filters we should apply to the module </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00841">841</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00488">SWModule::AddStripFilter</a>().
+<p>
+<div class="fragment"><pre>00842 {
+00843 string sourceformat;
+00844 ConfigEntMap::iterator entry;
+00845
+00846 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00847 <font class="comment">// Temporary: To support old module types</font>
+00848 <font class="keywordflow">if</font> (sourceformat.empty()) {
+00849 sourceformat = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00850 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"RawGBF"</font>))
+00851 sourceformat = <font class="stringliteral">"GBF"</font>;
+00852 <font class="keywordflow">else</font> sourceformat = <font class="stringliteral">""</font>;
+00853 }
+00854
+00855 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"GBF"</font>)) {
+00856 module-&gt;<a class="code" href="class_s_w_module.html#a49">AddStripFilter</a>(gbfplain);
+00857 }
+00858 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"ThML"</font>)) {
+00859 module-&gt;<a class="code" href="class_s_w_module.html#a49">AddStripFilter</a>(thmlplain);
+00860 }
+00861
+00862 <font class="keywordflow">if</font> (filterMgr)
+00863 filterMgr-&gt;AddStripFilters(module, section);
+00864
+00865 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a7" doxytag="SWMgr::getGlobalOption"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWMgr::getGlobalOption </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>option</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gives the value of the given option.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>The</em>&nbsp;</td><td>
+option, which should be used to return the value of it </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+The value of the given option </dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00988">988</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00989 {
+00990 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) {
+00991 <font class="keywordflow">if</font> ((*it).second-&gt;getOptionName()) {
+00992 <font class="keywordflow">if</font> (!stricmp(option, (*it).second-&gt;getOptionName()))
+00993 <font class="keywordflow">return</font> (*it).second-&gt;getOptionValue();
+00994 }
+00995 }
+00996 <font class="keywordflow">return</font> 0;
+00997 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a9" doxytag="SWMgr::getGlobalOptions"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> OptionsList SWMgr::getGlobalOptions </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A list of all availble options with the currently set values.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+This function returns a list of global options. </dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l01012">1012</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>01013 {
+01014 <font class="keywordflow">return</font> options;
+01015 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a8" doxytag="SWMgr::getGlobalOptionTip"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWMgr::getGlobalOptionTip </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>option</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gives a description for the given option.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>option</em>&nbsp;</td><td>
+The option, which should be used </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+A description of the given option </dl><dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_s_w_mgr.html#a6">setGlobalOption</a>, <a class="el" href="class_s_w_mgr.html#a7">getGlobalOption</a>, <a class="el" href="class_s_w_mgr.html#a9">getGlobalOptions</a> </dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l01000">1000</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>01001 {
+01002 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) {
+01003 <font class="keywordflow">if</font> ((*it).second-&gt;getOptionName()) {
+01004 <font class="keywordflow">if</font> (!stricmp(option, (*it).second-&gt;getOptionName()))
+01005 <font class="keywordflow">return</font> (*it).second-&gt;getOptionTip();
+01006 }
+01007 }
+01008 <font class="keywordflow">return</font> 0;
+01009 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a4" doxytag="SWMgr::InstallScan"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWMgr::InstallScan </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>dir</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Installs a scan for modules in the directory givan as parameter.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>dir</em>&nbsp;</td><td>
+The directory where new modules should be searched. </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00914">914</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+References <a class="el" href="swmgr_8h-source.html#l00145">config</a>, and <a class="el" href="swconfig_8h-source.html#l00052">SWConfig::filename</a>.
+<p>
+Referenced by <a class="el" href="swmgr_8cpp-source.html#l00536">Load</a>().
+<p>
+<div class="fragment"><pre>00915 {
+00916 DIR *dir;
+00917 <font class="keyword">struct </font>dirent *ent;
+00918 <font class="keywordtype">int</font> conffd = 0;
+00919 string newmodfile;
+00920 string targetName;
+00921
+00922 <font class="keywordflow">if</font> (!access(dirname, 04)) {
+00923 <font class="keywordflow">if</font> ((dir = opendir(dirname))) {
+00924 rewinddir(dir);
+00925 <font class="keywordflow">while</font> ((ent = readdir(dir))) {
+00926 <font class="keywordflow">if</font> ((strcmp(ent-&gt;d_name, <font class="stringliteral">"."</font>)) &amp;&amp; (strcmp(ent-&gt;d_name, <font class="stringliteral">".."</font>))) {
+00927 newmodfile = dirname;
+00928 <font class="keywordflow">if</font> ((dirname[strlen(dirname)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (dirname[strlen(dirname)-1] != <font class="charliteral">'/'</font>))
+00929 newmodfile += <font class="stringliteral">"/"</font>;
+00930 newmodfile += ent-&gt;d_name;
+00931 <font class="keywordflow">if</font> (configType) {
+00932 <font class="keywordflow">if</font> (<a class="code" href="class_s_w_mgr.html#m0">config</a> &gt; 0)
+00933 close(conffd);
+00934 targetName = configPath;
+00935 <font class="keywordflow">if</font> ((configPath[strlen(configPath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (configPath[strlen(configPath)-1] != <font class="charliteral">'/'</font>))
+00936 targetName += <font class="stringliteral">"/"</font>;
+00937 targetName += ent-&gt;d_name;
+00938 conffd = open(targetName.c_str(), O_WRONLY|O_CREAT, S_IREAD|S_IWRITE);
+00939 }
+00940 <font class="keywordflow">else</font> {
+00941 <font class="keywordflow">if</font> (conffd &lt; 1) {
+00942 conffd = open(<a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m0">filename</a>.c_str(), O_WRONLY|O_APPEND);
+00943 <font class="keywordflow">if</font> (conffd &gt; 0)
+00944 lseek(conffd, 0L, SEEK_END);
+00945 }
+00946 }
+00947 AddModToConfig(conffd, newmodfile.c_str());
+00948 unlink(newmodfile.c_str());
+00949 }
+00950 }
+00951 <font class="keywordflow">if</font> (conffd &gt; 0)
+00952 close(conffd);
+00953 closedir(dir);
+00954 }
+00955 }
+00956 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a5" doxytag="SWMgr::Load"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> signed char SWMgr::Load </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Load the modules.
+<p>
+Reimplement this function to use your own Load function, for example to use your own filters.
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00536">536</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+References <a class="el" href="swmgr_8h-source.html#l00145">config</a>, <a class="el" href="swmgr_8cpp-source.html#l00914">InstallScan</a>(), <a class="el" href="swconfig_8cpp-source.html#l00064">SWConfig::Load</a>(), <a class="el" href="swmgr_8h-source.html#l00172">Modules</a>, <a class="el" href="swmgr_8h-source.html#l00176">prefixPath</a>, and <a class="el" href="swconfig_8h-source.html#l00056">SWConfig::Sections</a>.
+<p>
+Referenced by <a class="el" href="swmgr_8cpp-source.html#l00207">SWMgr</a>().
+<p>
+<div class="fragment"><pre>00536 {
+00537 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> ret = 0;
+00538
+00539 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_mgr.html#m0">config</a>) { <font class="comment">// If we weren't passed a config object at construction, find a config file</font>
+00540 <font class="keywordflow">if</font> (!configPath) <font class="comment">// If we weren't passed a config path at construction...</font>
+00541 findConfig(&amp;configType, &amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, &amp;configPath);
+00542 <font class="keywordflow">if</font> (configPath) {
+00543 <font class="keywordflow">if</font> (configType)
+00544 loadConfigDir(configPath);
+00545 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(configPath);
+00546 }
+00547 }
+00548
+00549 <font class="keywordflow">if</font> (config) {
+00550 SectionMap::iterator Sectloop, Sectend;
+00551 ConfigEntMap::iterator Entryloop, Entryend;
+00552
+00553 DeleteMods();
+00554
+00555 <font class="keywordflow">for</font> (Sectloop = <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.lower_bound(<font class="stringliteral">"Globals"</font>), Sectend = <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.upper_bound(<font class="stringliteral">"Globals"</font>); Sectloop != Sectend; Sectloop++) { <font class="comment">// scan thru all 'Globals' sections</font>
+00556 <font class="keywordflow">for</font> (Entryloop = (*Sectloop).second.lower_bound(<font class="stringliteral">"AutoInstall"</font>), Entryend = (*Sectloop).second.upper_bound(<font class="stringliteral">"AutoInstall"</font>); Entryloop != Entryend; Entryloop++) <font class="comment">// scan thru all AutoInstall entries</font>
+00557 <a class="code" href="class_s_w_mgr.html#a4">InstallScan</a>((*Entryloop).second.c_str()); <font class="comment">// Scan AutoInstall entry directory for new modules and install</font>
+00558 }
+00559 <font class="keywordflow">if</font> (configType) { <font class="comment">// force reload on config object because we may have installed new modules</font>
+00560 <font class="keyword">delete</font> myconfig;
+00561 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = 0;
+00562 loadConfigDir(configPath);
+00563 }
+00564 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#a2">Load</a>();
+00565
+00566 CreateMods();
+00567
+00568 <font class="comment">// augment config with ~/.sword/mods.d if it exists ---------------------</font>
+00569 <font class="keywordtype">char</font> *envhomedir = getenv (<font class="stringliteral">"HOME"</font>);
+00570 <font class="keywordflow">if</font> (envhomedir != NULL &amp;&amp; configType != 2) { <font class="comment">// 2 = user only</font>
+00571 string path = envhomedir;
+00572 <font class="keywordflow">if</font> ((envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'/'</font>))
+00573 path += <font class="stringliteral">"/"</font>;
+00574 path += <font class="stringliteral">".sword/"</font>;
+00575 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) {
+00576 <font class="keywordtype">char</font> *savePrefixPath = 0;
+00577 <font class="keywordtype">char</font> *saveConfigPath = 0;
+00578 <a class="code" href="class_s_w_config.html">SWConfig</a> *saveConfig = 0;
+00579 stdstr(&amp;savePrefixPath, <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>);
+00580 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00581 path += <font class="stringliteral">"mods.d"</font>;
+00582 stdstr(&amp;saveConfigPath, configPath);
+00583 stdstr(&amp;configPath, path.c_str());
+00584 saveConfig = <a class="code" href="class_s_w_mgr.html#m0">config</a>;
+00585 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = 0;
+00586 loadConfigDir(configPath);
+00587
+00588 CreateMods();
+00589
+00590 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, savePrefixPath);
+00591 <font class="keyword">delete</font> []savePrefixPath;
+00592 stdstr(&amp;configPath, saveConfigPath);
+00593 <font class="keyword">delete</font> []saveConfigPath;
+00594 (*saveConfig) += *<a class="code" href="class_s_w_mgr.html#m0">config</a>;
+00595 homeConfig = myconfig;
+00596 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = saveConfig;
+00597 }
+00598 }
+00599 <font class="comment">// -------------------------------------------------------------------------</font>
+00600 <font class="keywordflow">if</font> ( !<a class="code" href="class_s_w_mgr.html#m2">Modules</a>.size() ) <font class="comment">// config exists, but no modules</font>
+00601 ret = 1;
+00602
+00603 }
+00604 <font class="keywordflow">else</font> {
+00605 SWLog::systemlog-&gt;LogError(<font class="stringliteral">"SWMgr: Can't find 'mods.conf' or 'mods.d'. Try setting:\n\tSWORD_PATH=&lt;directory containing mods.conf&gt;\n\tOr see the README file for a full description of setup options (%s)"</font>, (configPath) ? configPath : <font class="stringliteral">"&lt;configPath is null&gt;"</font>);
+00606 ret = -1;
+00607 }
+00608
+00609 <font class="keywordflow">return</font> ret;
+00610 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a11" doxytag="SWMgr::setCipherKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> signed char SWMgr::setCipherKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>modName</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets the cipher key for the given module.
+<p>
+This function updates the key at runtime, but it does not write to the config file. To write the new unlock key to the config file use code like this:
+<p>
+<div class="fragment"><pre> SectionMap::iterator section;
+ ConfigEntMap::iterator entry;
+ DIR *dir = opendir(configPath);
+ <font class="keyword">struct </font>dirent *ent;
+ <font class="keywordtype">char</font>* modFile;
+ <font class="keywordflow">if</font> (dir) { <font class="comment">// find and update .conf file</font>
+ rewinddir(dir);
+ <font class="keywordflow">while</font> ((ent = readdir(dir)))
+ {
+ <font class="keywordflow">if</font> ((strcmp(ent-&gt;d_name, <font class="stringliteral">"."</font>)) &amp;&amp; (strcmp(ent-&gt;d_name, <font class="stringliteral">".."</font>)))
+ {
+ modFile = m_backend-&gt;configPath;
+ modFile += <font class="stringliteral">"/"</font>;
+ modFile += ent-&gt;d_name;
+ <a class="code" href="class_s_w_config.html">SWConfig</a> *myConfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>( modFile );
+ section = myConfig-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.find( m_module-&gt;Name() );
+ <font class="keywordflow">if</font> ( section != myConfig-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.end() )
+ {
+ entry = section-&gt;second.find(<font class="stringliteral">"CipherKey"</font>);
+ <font class="keywordflow">if</font> (entry != section-&gt;second.end())
+ {
+ entry-&gt;second = unlockKey;<font class="comment">//set cipher key</font>
+ myConfig-&gt;<a class="code" href="class_s_w_config.html#a3">Save</a>();<font class="comment">//save config file</font>
+ }
+ }
+ <font class="keyword">delete</font> myConfig;
+ }
+ }
+ }
+ closedir(dir);
+</pre></div><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>modName</em>&nbsp;</td><td>
+For this module we change the unlockKey </td></tr>
+</table>
+</dl><dl compact><dt><b>
+an key This is the new unlck key we use for te module.</b><dd>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l01033">1033</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+References <a class="el" href="swmgr_8h-source.html#l00172">Modules</a>.
+<p>
+<div class="fragment"><pre>01033 {
+01034 FilterMap::iterator it;
+01035 ModMap::iterator it2;
+01036
+01037 <font class="comment">// check for filter that already exists</font>
+01038 it = cipherFilters.find(modName);
+01039 <font class="keywordflow">if</font> (it != cipherFilters.end()) {
+01040 ((CipherFilter *)(*it).second)-&gt;getCipher()-&gt;setCipherKey(key);
+01041 <font class="keywordflow">return</font> 0;
+01042 }
+01043 <font class="comment">// check if module exists</font>
+01044 <font class="keywordflow">else</font> {
+01045 it2 = <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.find(modName);
+01046 <font class="keywordflow">if</font> (it2 != <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.end()) {
+01047 SWFilter *cipherFilter = <font class="keyword">new</font> CipherFilter(key);
+01048 cipherFilters.insert(FilterMap::value_type(modName, cipherFilter));
+01049 cleanupFilters.push_back(cipherFilter);
+01050 (*it2).second-&gt;AddRawFilter(cipherFilter);
+01051 <font class="keywordflow">return</font> 0;
+01052 }
+01053 }
+01054 <font class="keywordflow">return</font> -1;
+01055 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a6" doxytag="SWMgr::setGlobalOption"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWMgr::setGlobalOption </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>option</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>value</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a global option Set a global option using the parameters.
+<p>
+A global option could be for example footnotes. <dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>option</em>&nbsp;</td><td>
+The name of the option, for which you want to change the value. Well known and often used values are "Footnotes" or "Strongs" </td></tr>
+<tr><td valign=top><em>value</em>&nbsp;</td><td>
+The value. Common values are "On" and "Off" </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00977">977</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>.
+<p>
+<div class="fragment"><pre>00978 {
+00979 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) {
+00980 <font class="keywordflow">if</font> ((*it).second-&gt;getOptionName()) {
+00981 <font class="keywordflow">if</font> (!stricmp(option, (*it).second-&gt;getOptionName()))
+00982 (*it).second-&gt;setOptionValue(value);
+00983 }
+00984 }
+00985 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Data Documentation</h2>
+<a name="m0" doxytag="SWMgr::config"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="class_s_w_config.html">SWConfig</a>* SWMgr::config
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The global config object.
+<p>
+This is the global config object. It contains all items of all modules, so lookups of entries should use this config object. If you want to save a cipher key or other things to the module config file, DO NOT USE this object, because it would corrupt your config files after config-&gt;Save().
+<p>
+If you want to write to the modules config file read the informtaion of <a class="el" href="class_s_w_mgr.html#a11">setCipherKey</a>() for an example of this.
+<p>
+Definition at line <a class="el" href="swmgr_8h-source.html#l00145">145</a> of file <a class="el" href="swmgr_8h-source.html">swmgr.h</a>.
+<p>
+Referenced by <a class="el" href="swmgr_8cpp-source.html#l00914">InstallScan</a>(), <a class="el" href="swmgr_8cpp-source.html#l00536">Load</a>(), and <a class="el" href="swmgr_8cpp-source.html#l00207">SWMgr</a>(). </td>
+ </tr>
+</table>
+<a name="p0" doxytag="SWMgr::debug"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool SWMgr::debug = false<code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Enable / Disable debug output on runtime Set this to true to get more verbose output of SWMgr at runtime.
+<p>
+Set it to false to get no debug output. The default is "false".
+<p>
+Definition at line <a class="el" href="swmgr_8cpp-source.html#l00081">81</a> of file <a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a>. </td>
+ </tr>
+</table>
+<a name="m2" doxytag="SWMgr::Modules"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> ModMap SWMgr::Modules
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The map of available modules.
+<p>
+This map contains thew list of available modules in Sword. Here's an example how to got through the map and how toc ehck for the module type.
+<p>
+<div class="fragment"><pre> ModMap::iterator it;
+ <a class="code" href="class_s_w_module.html">SWModule</a>* curMod = 0;
+
+ <font class="keywordflow">for</font> (it = <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.begin(); it != <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.end(); it++) {
+ curMod = (*it).second;
+ <font class="keywordflow">if</font> (!strcmp(curMod-&gt;<a class="code" href="class_s_w_module.html#a17">Type</a>(), <font class="stringliteral">"Biblical Texts"</font>)) {
+ <font class="comment">//do something with curMod</font>
+ }
+ <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(curMod-&gt;<a class="code" href="class_s_w_module.html#a17">Type</a>(), <font class="stringliteral">"Commentaries"</font>)) {
+ <font class="comment">//do something with curMod</font>
+ }
+ <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(curMod-&gt;<a class="code" href="class_s_w_module.html#a17">Type</a>(), <font class="stringliteral">"Lexicons / Dictionaries"</font>)) {
+ <font class="comment">//do something with curMod</font>
+ }
+ }
+</pre></div>
+<p>
+Definition at line <a class="el" href="swmgr_8h-source.html#l00172">172</a> of file <a class="el" href="swmgr_8h-source.html">swmgr.h</a>.
+<p>
+Referenced by <a class="el" href="swmgr_8cpp-source.html#l00536">Load</a>(), and <a class="el" href="swmgr_8cpp-source.html#l01033">setCipherKey</a>(). </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swmgr_8h-source.html">swmgr.h</a><li><a class="el" href="swmgr_8cpp-source.html">swmgr.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:03 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_mgr__coll__graph.png b/doc/api-documentation/html/class_s_w_mgr__coll__graph.png
new file mode 100644
index 0000000..a2eeafc
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_mgr__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_module-members.html b/doc/api-documentation/html/class_s_w_module-members.html
new file mode 100644
index 0000000..4c789c7
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_module-members.html
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWModule Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_module.html">SWModule</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a45">AddEncodingFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a54">AddOptionFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a51">AddRawFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a41">AddRenderFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a49">AddStripFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>config</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a26">CreateKey</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d1">createModule</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>createSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a35">deleteEntry</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a16">Description</a>(const char *imoddesc=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a18">Direction</a>(signed char newdir=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>direction</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a14">Disp</a>(SWDisplay *idisp=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n15">disp</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a13">Display</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a19">Encoding</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>encoding</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a48">encodingFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n22">encodingFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entryAttributes</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybuf</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybufallocsize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrySize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a2">Error</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a52">filterBuffer</a>(FilterList *filters, char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>flush</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfig</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfigEntry</b>(const char *key) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a7">getEntrySize</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a28">getRawEntry</a>()=0</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getSkipConsecutiveLinks</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>hasSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>isProcessEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a25">isSearchOptimallySupported</a>(const char *istr, int searchType, int flags, SWKey *scope)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a3">isUnicode</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a31">isWritable</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a10">Key</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a11">Key</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n6">key</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a12">KeyText</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a21">Lang</a>(const char *imodlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>lastAccess</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>listkey</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a20">Markup</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>markup</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>moddesc</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modlang</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modname</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modtype</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a15">Name</a>(const char *imodname=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d0">nullPercent</a>(char percent, void *userData)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a27">operator const char *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a29">operator SWKey &amp;</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a30">operator SWKey *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a38">operator++</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a37">operator+=</a>(int increment)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a39">operator--</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a36">operator-=</a>(int decrement)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a33">operator&lt;&lt;</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a34">operator&lt;&lt;</a>(const SWKey *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a40">operator=</a>(SW_POSITION p)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a55">optionFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n21">optionFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ownConfig</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>procEntAttr</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>processEntryAttributes</b>(bool val) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>rawdisp</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a53">rawFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n19">rawFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a46">RemoveEncodingFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a42">RemoveRenderFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a44">renderFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n20">renderFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a57">RenderText</a>(char *buf=0, int len=-1, bool render=true)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a59">RenderText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a47">ReplaceEncodingFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a43">ReplaceRenderFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resourceConsumption</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a22">Search</a>(const char *istr, int searchType=0, int flags=0, SWKey *scope=0, bool *justCheckIfSupported=0, void(*percent)(char, void *)=&amp;nullPercent, void *percentUserData=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setConfig</b>(ConfigEntMap *config) (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a32">setentry</a>(const char *inbuf, long len)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a8">SetKey</a>(const SWKey *ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a9">SetKey</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a60">setSkipConsecutiveLinks</a>(bool val)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>skipConsecutiveLinks</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a50">stripFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n18">stripFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a56">StripText</a>(char *buf=0, int len=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a58">StripText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a0">SWModule</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, char *imodtype=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *modlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#m0">terminateSearch</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a17">Type</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a1">~SWModule</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_module.html b/doc/api-documentation/html/class_s_w_module.html
new file mode 100644
index 0000000..c292be8
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_module.html
@@ -0,0 +1,3339 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWModule class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWModule Class Reference</h1>The class SWModule is the base class for all modules used in Sword.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swmodule_8h-source.html">swmodule.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWModule:<p><center><img src="class_s_w_module__inherit__graph.png" border="0" usemap="#_s_w_module__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_module__inherit__map">
+<area href="class_s_w_com.html" shape="rect" coords="14,84,75,103" alt="">
+<area href="class_s_w_gen_book.html" shape="rect" coords="99,84,187,103" alt="">
+<area href="class_s_w_l_d.html" shape="rect" coords="211,84,259,103" alt="">
+<area href="class_s_w_text.html" shape="rect" coords="283,84,342,103" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWModule:<p><center><img src="class_s_w_module__coll__graph.png" border="0" usemap="#_s_w_module__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_module__coll__map">
+<area href="class_list_key.html" shape="rect" coords="75,294,129,313" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="122,197,178,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,125" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="273,197,347,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="145,15,209,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_module-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a0">SWModule</a> (const char *imodname=0, const char *imoddesc=0, <a class="el" href="class_s_w_display.html">SWDisplay</a> *idisp=0, char *imodtype=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *modlang=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Initializes data for instance of SWModule.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWModule::~SWModule"></a>
+virtual&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a1">~SWModule</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Cleans up instance of SWModule.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a2">Error</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets and clears error status.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a3">isUnicode</a> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="SWModule::getConfig"></a>
+virtual const ConfigEntMap &amp;&nbsp;</td><td valign=bottom><b>getConfig</b> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="SWModule::setConfig"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setConfig</b> (ConfigEntMap *config)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="SWModule::getConfigEntry"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getConfigEntry</b> (const char *<a class="el" href="class_s_w_module.html#n6">key</a>) const</td></tr>
+<tr><td nowrap align=right valign=top>virtual const int&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a7">getEntrySize</a> () const</td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a8">SetKey</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> *ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets a key to this module for position to a particular record or set of records.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a9">SetKey</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets the key of this module.</em> <a href="#a9">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a10">Key</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets the current module key.</em> <a href="#a10">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a11">Key</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets the current key of the module to ikey, and returns the keytext.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a12">KeyText</a> (const char *imodtype=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module KeyText.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a13">Display</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Calls this modules display object and passes itself.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a14">Disp</a> (<a class="el" href="class_s_w_display.html">SWDisplay</a> *idisp=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets display driver.</em> <a href="#a14">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a15">Name</a> (const char *imodname=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module name.</em> <a href="#a15">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a16">Description</a> (const char *imoddesc=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module description.</em> <a href="#a16">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a17">Type</a> (const char *imodtype=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module type.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a18">Direction</a> (signed char newdir=-1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module direction.</em> <a href="#a18">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a19">Encoding</a> (signed char enc=-1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module encoding.</em> <a href="#a19">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a20">Markup</a> (signed char enc=-1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module markup.</em> <a href="#a20">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a21">Lang</a> (const char *imodlang=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets module language.</em> <a href="#a21">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_list_key.html">ListKey</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a22">Search</a> (const char *istr, int searchType=0, int flags=0, <a class="el" href="class_s_w_key.html">SWKey</a> *scope=0, bool *justCheckIfSupported=0, void(*percent)(char, void *)=&amp;nullPercent, void *percentUserData=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Searches a module for a string.</em> <a href="#a22">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a23" doxytag="SWModule::createSearchFramework"></a>
+virtual signed char&nbsp;</td><td valign=bottom><b>createSearchFramework</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a24" doxytag="SWModule::hasSearchFramework"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>hasSearchFramework</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a25">isSearchOptimallySupported</a> (const char *istr, int searchType, int flags, <a class="el" href="class_s_w_key.html">SWKey</a> *scope)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Check if the search is optimally supported (e.g.</em> <a href="#a25">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a26">CreateKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Allocates a key of specific type for module The different reimplementatiosn of SWModule (e.g.</em> <a href="#a26">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a27">operator const char *</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Renders and returns the current module text.</em> <a href="#a27">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a28">getRawEntry</a> ()=0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is reimplemented by the different kinds of module objects.</em> <a href="#a28">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a29">operator SWKey &amp;</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Cast operator to cast to a <a class="el" href="class_s_w_key.html">SWKey</a> reference.</em> <a href="#a29">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a30">operator SWKey *</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Operator to cast to an <a class="el" href="class_s_w_key.html">SWKey</a> pointer.</em> <a href="#a30">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a31">isWritable</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Is the module writable? :).</em> <a href="#a31">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a32">setentry</a> (const char *inbuf, long len)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Modify the current module entry text only if module <a class="el" href="class_s_w_module.html#a31">isWritable</a>.</em> <a href="#a32">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a33">operator&lt;&lt;</a> (const char *)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Modify the current module entry text only if module <a class="el" href="class_s_w_module.html#a31">isWritable</a>.</em> <a href="#a33">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a34">operator&lt;&lt;</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> *)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Link the current module entry to another module entry only if module <a class="el" href="class_s_w_module.html#a31">isWritable</a>.</em> <a href="#a34">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a35" doxytag="SWModule::deleteEntry"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a35">deleteEntry</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Delete current module entry - only if module <a class="el" href="class_s_w_module.html#a31">isWritable</a>.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a36">operator-=</a> (int decrement)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Decrements module key a number of entries.</em> <a href="#a36">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a37">operator+=</a> (int increment)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Increments module key a number of entries.</em> <a href="#a37">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a38" doxytag="SWModule::operator++"></a>
+virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a38">operator++</a> (int)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Increments module key by 1 entry.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a39" doxytag="SWModule::operator--"></a>
+virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a39">operator--</a> (int)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Decrements module key by 1 entry.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a40">operator=</a> (SW_POSITION p)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Positions this modules to an entry.</em> <a href="#a40">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a41">AddRenderFilter</a> (SWFilter *newfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds a RenderFilter to this module's.</em> <a href="#a41">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a42">RemoveRenderFilter</a> (SWFilter *oldfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Removes a RenderFilter from this module's.</em> <a href="#a42">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a43">ReplaceRenderFilter</a> (SWFilter *oldfilter, SWFilter *newfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Replaces a RenderFilter in this module's.</em> <a href="#a43">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a44">renderFilter</a> (char *buf, long size, <a class="el" href="class_s_w_key.html">SWKey</a> *<a class="el" href="class_s_w_module.html#n6">key</a>)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>RenderFilter a text buffer.</em> <a href="#a44">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a45">AddEncodingFilter</a> (SWFilter *newfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds an EncodingFilter to this module's.</em> <a href="#a45">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a46">RemoveEncodingFilter</a> (SWFilter *oldfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Removes an EncodingFilter from this module's.</em> <a href="#a46">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a47">ReplaceEncodingFilter</a> (SWFilter *oldfilter, SWFilter *newfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Replaces an EncodingFilter in this module's.</em> <a href="#a47">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a48">encodingFilter</a> (char *buf, long size, <a class="el" href="class_s_w_key.html">SWKey</a> *<a class="el" href="class_s_w_module.html#n6">key</a>)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>encodingFilter a text buffer.</em> <a href="#a48">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a49">AddStripFilter</a> (SWFilter *newfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds a StripFilter to this module's stripfilters queue.</em> <a href="#a49">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a50">stripFilter</a> (char *buf, long size, <a class="el" href="class_s_w_key.html">SWKey</a> *<a class="el" href="class_s_w_module.html#n6">key</a>)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>StripFilter a text buffer.</em> <a href="#a50">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a51">AddRawFilter</a> (SWFilter *newfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds a RawFilter to this module's rawfilters queue.</em> <a href="#a51">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a52">filterBuffer</a> (FilterList *filters, char *buf, long size, <a class="el" href="class_s_w_key.html">SWKey</a> *<a class="el" href="class_s_w_module.html#n6">key</a>)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>FilterBuffer a text buffer.</em> <a href="#a52">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a53">rawFilter</a> (char *buf, long size, <a class="el" href="class_s_w_key.html">SWKey</a> *<a class="el" href="class_s_w_module.html#n6">key</a>)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>RawFilter a text buffer.</em> <a href="#a53">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual SWModule &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a54">AddOptionFilter</a> (SWFilter *newfilter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Adds an OptionFilter to this module's optionfilters queue.</em> <a href="#a54">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a55">optionFilter</a> (char *buf, long size, <a class="el" href="class_s_w_key.html">SWKey</a> *<a class="el" href="class_s_w_module.html#n6">key</a>)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>OptionFilter a text buffer.</em> <a href="#a55">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a56">StripText</a> (char *buf=0, int len=-1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>calls all StripFilters on buffer or current text.</em> <a href="#a56">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a57">RenderText</a> (char *buf=0, int len=-1, bool render=true)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>calls all RenderFilters on buffer or current text.</em> <a href="#a57">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a58">StripText</a> (<a class="el" href="class_s_w_key.html">SWKey</a> *tmpKey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>calls all StripFilters on current text.</em> <a href="#a58">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a59">RenderText</a> (<a class="el" href="class_s_w_key.html">SWKey</a> *tmpKey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>calls all RenderFilters on current text.</em> <a href="#a59">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#a60">setSkipConsecutiveLinks</a> (bool val)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>option to specify behaviour when iterating over consecutive entried linked to same text.</em> <a href="#a60">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a61" doxytag="SWModule::getSkipConsecutiveLinks"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>getSkipConsecutiveLinks</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a62" doxytag="SWModule::getEntryAttributes"></a>
+virtual AttributeTypeList &amp;&nbsp;</td><td valign=bottom><b>getEntryAttributes</b> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a63" doxytag="SWModule::processEntryAttributes"></a>
+virtual void&nbsp;</td><td valign=bottom><b>processEntryAttributes</b> (bool val) const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a64" doxytag="SWModule::isProcessEntryAttributes"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>isProcessEntryAttributes</b> () const</td></tr>
+<tr><td colspan=2><br><h2>Static Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#d0">nullPercent</a> (char percent, void *userData)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This is the default callback function for searching.</em> <a href="#d0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>signed char&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#d1">createModule</a> (const char *)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Creates a new module.</em> <a href="#d1">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#m0">terminateSearch</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Set this bool to false to terminate the search which is executed by this module (<a class="el" href="class_s_w_module.html#a22">Search</a>).</em> <a href="#m0">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="SWModule::ownConfig"></a>
+ConfigEntMap&nbsp;</td><td valign=bottom><b>ownConfig</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n1" doxytag="SWModule::config"></a>
+ConfigEntMap *&nbsp;</td><td valign=bottom><b>config</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n2" doxytag="SWModule::entryAttributes"></a>
+AttributeTypeList&nbsp;</td><td valign=bottom><b>entryAttributes</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n3" doxytag="SWModule::procEntAttr"></a>
+bool&nbsp;</td><td valign=bottom><b>procEntAttr</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n4" doxytag="SWModule::error"></a>
+char&nbsp;</td><td valign=bottom><b>error</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n5" doxytag="SWModule::skipConsecutiveLinks"></a>
+bool&nbsp;</td><td valign=bottom><b>skipConsecutiveLinks</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n6" doxytag="SWModule::key"></a>
+<a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#n6">key</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>the current key.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="n7" doxytag="SWModule::listkey"></a>
+<a class="el" href="class_list_key.html">ListKey</a>&nbsp;</td><td valign=bottom><b>listkey</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n8" doxytag="SWModule::modname"></a>
+char *&nbsp;</td><td valign=bottom><b>modname</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n9" doxytag="SWModule::moddesc"></a>
+char *&nbsp;</td><td valign=bottom><b>moddesc</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n10" doxytag="SWModule::modtype"></a>
+char *&nbsp;</td><td valign=bottom><b>modtype</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n11" doxytag="SWModule::modlang"></a>
+char *&nbsp;</td><td valign=bottom><b>modlang</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n12" doxytag="SWModule::direction"></a>
+char&nbsp;</td><td valign=bottom><b>direction</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n13" doxytag="SWModule::markup"></a>
+char&nbsp;</td><td valign=bottom><b>markup</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n14" doxytag="SWModule::encoding"></a>
+char&nbsp;</td><td valign=bottom><b>encoding</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n15" doxytag="SWModule::disp"></a>
+<a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#n15">disp</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>this module's display object.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="n16" doxytag="SWModule::entrybuf"></a>
+char *&nbsp;</td><td valign=bottom><b>entrybuf</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n17" doxytag="SWModule::entrybufallocsize"></a>
+unsigned long&nbsp;</td><td valign=bottom><b>entrybufallocsize</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="n18" doxytag="SWModule::stripFilters"></a>
+FilterList *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#n18">stripFilters</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>executed to remove all markup (for searches).</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="n19" doxytag="SWModule::rawFilters"></a>
+FilterList *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#n19">rawFilters</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>executed immediately upon fileread.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="n20" doxytag="SWModule::renderFilters"></a>
+FilterList *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#n20">renderFilters</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>executed to format for display.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="n21" doxytag="SWModule::optionFilters"></a>
+FilterList *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#n21">optionFilters</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>executed to change markup to user prefs.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="n22" doxytag="SWModule::encodingFilters"></a>
+FilterList *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_module.html#n22">encodingFilters</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>executed to decode text for display.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="n23" doxytag="SWModule::entrySize"></a>
+int&nbsp;</td><td valign=bottom><b>entrySize</b></td></tr>
+<tr><td colspan=2><br><h2>Static Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="q0" doxytag="SWModule::rawdisp"></a>
+<a class="el" href="class_s_w_display.html">SWDisplay</a>&nbsp;</td><td valign=bottom><b>rawdisp</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The class SWModule is the base class for all modules used in Sword.
+<p>
+It provides functions to look up a text passage, to search in the module, to switch on/off the state of optional things like Strong's numbers or footnotes.
+<p>
+SWModule has also functions to write to the data files. This might be useful in future for frontend authors to support user-created modules.
+<p>
+
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00064">64</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWModule::SWModule"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWModule::SWModule </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imodname</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imoddesc</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>idisp</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imodtype</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextEncoding&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>encoding</em> = ENC_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextDirection&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>dir</em> = DIRECTION_LTR, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextMarkup&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>markup</em> = FMT_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>modlang</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Initializes data for instance of SWModule.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodname</em>&nbsp;</td><td>
+Internal name for module; see also <a class="el" href="class_s_w_module.html#a15">Name</a> </td></tr>
+<tr><td valign=top><em>imoddesc</em>&nbsp;</td><td>
+Name to display to user for module; see also <a class="el" href="class_s_w_module.html#a16">Description</a> </td></tr>
+<tr><td valign=top><em>idisp</em>&nbsp;</td><td>
+Display object to use for displaying see also <a class="el" href="class_s_w_module.html#a14">Disp</a> </td></tr>
+<tr><td valign=top><em>imodtype</em>&nbsp;</td><td>
+Type of Module (All modules will be displayed with others of same type under their modtype heading) see also <a class="el" href="class_s_w_module.html#a17">Type</a> </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00031">31</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00105">CreateKey</a>(), <a class="el" href="swmodule_8h-source.html#l00090">disp</a>, <a class="el" href="swmodule_8h-source.html#l00109">encodingFilters</a>, <a class="el" href="swmodule_8h-source.html#l00077">key</a>, <a class="el" href="swmodule_8h-source.html#l00106">optionFilters</a>, <a class="el" href="swmodule_8h-source.html#l00100">rawFilters</a>, <a class="el" href="swmodule_8h-source.html#l00103">renderFilters</a>, and <a class="el" href="swmodule_8h-source.html#l00097">stripFilters</a>.
+<p>
+<div class="fragment"><pre>00032 {
+00033 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00034 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [1];
+00035 *entrybuf = 0;
+00036 config = &amp;ownConfig;
+00037 entrybufallocsize = 0;
+00038 modname = 0;
+00039 error = 0;
+00040 moddesc = 0;
+00041 modtype = 0;
+00042 modlang = 0;
+00043 this-&gt;encoding = encoding;
+00044 this-&gt;direction = direction;
+00045 this-&gt;markup = markup;
+00046 entrySize= -1;
+00047 <a class="code" href="class_s_w_module.html#n15">disp</a> = (idisp) ? idisp : &amp;rawdisp;
+00048 stdstr(&amp;modname, imodname);
+00049 stdstr(&amp;moddesc, imoddesc);
+00050 stdstr(&amp;modtype, imodtype);
+00051 stdstr(&amp;modlang, imodlang);
+00052 <a class="code" href="class_s_w_module.html#n18">stripFilters</a> = <font class="keyword">new</font> FilterList();
+00053 <a class="code" href="class_s_w_module.html#n19">rawFilters</a> = <font class="keyword">new</font> FilterList();
+00054 <a class="code" href="class_s_w_module.html#n20">renderFilters</a> = <font class="keyword">new</font> FilterList();
+00055 <a class="code" href="class_s_w_module.html#n21">optionFilters</a> = <font class="keyword">new</font> FilterList();
+00056 <a class="code" href="class_s_w_module.html#n22">encodingFilters</a> = <font class="keyword">new</font> FilterList();
+00057 skipConsecutiveLinks = <font class="keyword">true</font>;
+00058 procEntAttr = <font class="keyword">true</font>;
+00059 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a45" doxytag="SWModule::AddEncodingFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::AddEncodingFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>newfilter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds an EncodingFilter to this module's.
+<p>
+<dl compact><dt><b>
+See also: </b><dd>
+encodingfilters queue </dl><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newfilter</em>&nbsp;</td><td>
+the filter to add </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00451">451</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="encfiltmgr_8cpp-source.html#l00092">EncodingFilterMgr::AddEncodingFilters</a>().
+<p>
+<div class="fragment"><pre>00451 {
+00452 <a class="code" href="class_s_w_module.html#n22">encodingFilters</a>-&gt;push_back (newfilter);
+00453 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00454 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a54" doxytag="SWModule::AddOptionFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::AddOptionFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>newfilter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds an OptionFilter to this module's optionfilters queue.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newfilter</em>&nbsp;</td><td>
+the filter to add </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00536">536</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00536 {
+00537 <a class="code" href="class_s_w_module.html#n21">optionFilters</a>-&gt;push_back (newfilter);
+00538 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00539 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a51" doxytag="SWModule::AddRawFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::AddRawFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>newfilter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds a RawFilter to this module's rawfilters queue.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newfilter</em>&nbsp;</td><td>
+the filter to add </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00505">505</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmgr_8cpp-source.html#l00791">SWMgr::AddRawFilters</a>(), and <a class="el" href="encfiltmgr_8cpp-source.html#l00079">EncodingFilterMgr::AddRawFilters</a>().
+<p>
+<div class="fragment"><pre>00505 {
+00506 <a class="code" href="class_s_w_module.html#n19">rawFilters</a>-&gt;push_back (newfilter);
+00507 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00508 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a41" doxytag="SWModule::AddRenderFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::AddRenderFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>newfilter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds a RenderFilter to this module's.
+<p>
+<dl compact><dt><b>
+See also: </b><dd>
+renderfilters queue </dl><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newfilter</em>&nbsp;</td><td>
+the filter to add </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00414">414</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="markupfiltmgr_8cpp-source.html#l00168">MarkupFilterMgr::AddRenderFilters</a>().
+<p>
+<div class="fragment"><pre>00414 {
+00415 <a class="code" href="class_s_w_module.html#n20">renderFilters</a>-&gt;push_back (newfilter);
+00416 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00417 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a49" doxytag="SWModule::AddStripFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::AddStripFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>newfilter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adds a StripFilter to this module's stripfilters queue.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newfilter</em>&nbsp;</td><td>
+the filter to add </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00488">488</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmgr_8cpp-source.html#l00841">SWMgr::AddStripFilters</a>().
+<p>
+<div class="fragment"><pre>00488 {
+00489 <a class="code" href="class_s_w_module.html#n18">stripFilters</a>-&gt;push_back (newfilter);
+00490 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00491 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a26" doxytag="SWModule::CreateKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="class_s_w_key.html">SWKey</a> * SWModule::CreateKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Allocates a key of specific type for module The different reimplementatiosn of SWModule (e.g.
+<p>
+<a class="el" href="class_s_w_text.html">SWText</a>) support <a class="el" href="class_s_w_key.html">SWKey</a> implementations, which support special. This functions returns a <a class="el" href="class_s_w_key.html">SWKey</a> object which works with the current implementation of SWModule. For example for the <a class="el" href="class_s_w_text.html">SWText</a> class it returns a <a class="el" href="class_verse_key.html">VerseKey</a> object. <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_verse_key.html">VerseKey</a>, <a class="el" href="class_list_key.html">ListKey</a>, <a class="el" href="class_s_w_text.html">SWText</a>, <a class="el" href="class_s_w_l_d.html">SWLD</a>, <a class="el" href="class_s_w_com.html">SWCom</a> </dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to allocated key </dl>
+<p>
+Reimplemented in <a class="el" href="class_s_w_com.html#a2">SWCom</a>, <a class="el" href="class_s_w_gen_book.html#a2">SWGenBook</a>, <a class="el" href="class_s_w_l_d.html#a2">SWLD</a>, and <a class="el" href="class_s_w_text.html#a2">SWText</a>.
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00105">105</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00606">RenderText</a>(), <a class="el" href="swmodule_8cpp-source.html#l00391">Search</a>(), <a class="el" href="swmodule_8cpp-source.html#l00272">SetKey</a>(), <a class="el" href="swmodule_8cpp-source.html#l00638">StripText</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00031">SWModule</a>().
+<p>
+<div class="fragment"><pre>00106 {
+00107 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_s_w_key.html">SWKey</a>();
+00108 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="d1" doxytag="SWModule::createModule"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> signed char SWModule::createModule </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Creates a new module.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>path</em>&nbsp;</td><td>
+The first parameter is path of the new module </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+error </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00349">349</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00349 {
+00350 <font class="keywordflow">return</font> -1;
+00351 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a16" doxytag="SWModule::Description"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char * SWModule::Description </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>imoddesc</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module description.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imoddesc</em>&nbsp;</td><td>
+value which to set moddesc; [0] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to moddesc </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00150">150</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+<div class="fragment"><pre>00151 {
+00152 <font class="keywordflow">return</font> stdstr(&amp;moddesc, imoddesc);
+00153 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a18" doxytag="SWModule::Direction"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWModule::Direction </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">signed char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>newdir</em> = -1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module direction.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newdir</em>&nbsp;</td><td>
+value which to set direction; [-1] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+char direction </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00178">178</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+<div class="fragment"><pre>00178 {
+00179 <font class="keywordflow">if</font> (newdir != -1)
+00180 direction = newdir;
+00181 <font class="keywordflow">return</font> direction;
+00182 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a14" doxytag="SWModule::Disp"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="class_s_w_display.html">SWDisplay</a> * SWModule::Disp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>idisp</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets display driver.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>idisp</em>&nbsp;</td><td>
+value which to set disp; [0] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to disp </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00237">237</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00090">disp</a>.
+<p>
+<div class="fragment"><pre>00238 {
+00239 <font class="keywordflow">if</font> (idisp)
+00240 <a class="code" href="class_s_w_module.html#n15">disp</a> = idisp;
+00241
+00242 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#n15">disp</a>;
+00243 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a13" doxytag="SWModule::Display"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWModule::Display </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Calls this modules display object and passes itself.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+error status </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00252">252</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00090">disp</a>, and <a class="el" href="swdisp_8cpp-source.html#l00023">SWDisplay::Display</a>().
+<p>
+<div class="fragment"><pre>00253 {
+00254 <a class="code" href="class_s_w_module.html#n15">disp</a>-&gt;<a class="code" href="class_s_w_display.html#a1">Display</a>(*<font class="keyword">this</font>);
+00255 <font class="keywordflow">return</font> 0;
+00256 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a19" doxytag="SWModule::Encoding"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWModule::Encoding </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">signed char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>enc</em> = -1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module encoding.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newdir</em>&nbsp;</td><td>
+value which to set encoding; [-1] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+char encoding </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00192">192</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+<div class="fragment"><pre>00192 {
+00193 <font class="keywordflow">if</font> (newenc != -1)
+00194 encoding = newenc;
+00195 <font class="keywordflow">return</font> encoding;
+00196 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a48" doxytag="SWModule::encodingFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void SWModule::encodingFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+encodingFilter a text buffer.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the buffer to filter </td></tr>
+<tr><td valign=top><em>size</em>&nbsp;</td><td>
+the allocated size of the buffer </td></tr>
+<tr><td valign=top><em>key</em>&nbsp;</td><td>
+key location from where this buffer was extracted </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00481">481</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>().
+<p>
+<div class="fragment"><pre>00481 {
+00482 <a class="code" href="class_s_w_module.html#a52">filterBuffer</a>(<a class="code" href="class_s_w_module.html#n22">encodingFilters</a>, buf, size, key);
+00483 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a2" doxytag="SWModule::Error"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWModule::Error </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets and clears error status.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+error status </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00117">117</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00391">Search</a>().
+<p>
+<div class="fragment"><pre>00118 {
+00119 <font class="keywordtype">char</font> retval = error;
+00120
+00121 error = 0;
+00122 <font class="keywordflow">return</font> retval;
+00123 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a52" doxytag="SWModule::filterBuffer"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void SWModule::filterBuffer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">FilterList *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>filters</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+FilterBuffer a text buffer.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>filters</em>&nbsp;</td><td>
+the FilterList of filters to iterate </td></tr>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the buffer to filter </td></tr>
+<tr><td valign=top><em>size</em>&nbsp;</td><td>
+the allocated size of the buffer </td></tr>
+<tr><td valign=top><em>key</em>&nbsp;</td><td>
+key location from where this buffer was extracted </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00516">516</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00516 {
+00517 FilterList::iterator it;
+00518 <font class="keywordflow">for</font> (it = filters-&gt;begin(); it != filters-&gt;end(); it++) {
+00519 (*it)-&gt;ProcessText(buf, size, key, <font class="keyword">this</font>);
+00520 }
+00521 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a7" doxytag="SWModule::getEntrySize"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual const int SWModule::getEntrySize </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+The size of the current entry. </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00162">162</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>().
+<p>
+<div class="fragment"><pre>00162 {<font class="keywordflow">return</font> entrySize;}
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a28" doxytag="SWModule::getRawEntry"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual char* SWModule::getRawEntry </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is reimplemented by the different kinds of module objects.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+the raw module text of the current entry </dl>
+<p>
+Referenced by <a class="el" href="swld_8cpp-source.html#l00047">SWLD::KeyText</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>(). </td>
+ </tr>
+</table>
+<a name="a25" doxytag="SWModule::isSearchOptimallySupported"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool SWModule::isSearchOptimallySupported </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>istr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>searchType</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>scope</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Check if the search is optimally supported (e.g.
+<p>
+if index files are presnt and working) This function checks whether the search framework may work in the best way. <dl compact><dt><b>
+Returns: </b><dd>
+True if the the search is optimally supported, false if it's not working in the best way. </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00295">295</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00296 {
+00297 <font class="keywordtype">bool</font> retVal = <font class="keyword">false</font>;
+00298 <a class="code" href="class_s_w_module.html#a22">Search</a> (istr, searchType, flags, scope, &amp;retVal);
+00299 <font class="keywordflow">return</font> retVal;
+00300 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a3" doxytag="SWModule::isUnicode"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual const bool SWModule::isUnicode </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+True if this module is encoded in Unicode, otherwise return false. </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00150">150</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00150 {<font class="keywordflow">return</font> (encoding == (char)ENC_UTF8 || encoding == (char)ENC_SCSU);}
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a31" doxytag="SWModule::isWritable"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool SWModule::isWritable </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Is the module writable? :).
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+yes or no </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00342">342</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00342 {
+00343 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00344 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a11" doxytag="SWModule::Key"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual char SWModule::Key </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets the current key of the module to ikey, and returns the keytext.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+new current key for the module </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+the keytext of the current module key </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00189">189</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00189 {
+00190 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a8">SetKey</a> (ikey);
+00191 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a10" doxytag="SWModule::Key"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="class_s_w_key.html">SWKey</a>&amp; SWModule::Key </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets the current module key.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+the current key of this module </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00180">180</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00180 {
+00181 <font class="keywordflow">return</font> *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00182 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a12" doxytag="SWModule::KeyText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWModule::KeyText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>imodtype</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module KeyText.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikeytext</em>&nbsp;</td><td>
+value which to set keytext; [0] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to keytext </dl>
+<p>
+Reimplemented in <a class="el" href="class_s_w_l_d.html#a3">SWLD</a>.
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00303">303</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00077">key</a>, and <a class="el" href="swmodule_8cpp-source.html#l00272">SetKey</a>().
+<p>
+Referenced by <a class="el" href="swld_8cpp-source.html#l00047">SWLD::KeyText</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00391">Search</a>().
+<p>
+<div class="fragment"><pre>00304 {
+00305 <font class="keywordflow">if</font> (ikeytext)
+00306 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(ikeytext);
+00307
+00308 <font class="keywordflow">return</font> *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00309 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a21" doxytag="SWModule::Lang"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char * SWModule::Lang </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>imodlang</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module language.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodlang</em>&nbsp;</td><td>
+value which to set modlang; [0] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to modlang </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00222">222</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+<div class="fragment"><pre>00223 {
+00224 <font class="keywordflow">return</font> stdstr(&amp;modlang, imodlang);
+00225 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a20" doxytag="SWModule::Markup"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWModule::Markup </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">signed char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>enc</em> = -1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module markup.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>newdir</em>&nbsp;</td><td>
+value which to set markup; [-1] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+char markup </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00206">206</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+Referenced by <a class="el" href="markupfiltmgr_8cpp-source.html#l00168">MarkupFilterMgr::AddRenderFilters</a>().
+<p>
+<div class="fragment"><pre>00206 {
+00207 <font class="keywordflow">if</font> (newmark != -1)
+00208 markup = newmark;
+00209 <font class="keywordflow">return</font> markup;
+00210 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a15" doxytag="SWModule::Name"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char * SWModule::Name </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>imodname</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module name.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodname</em>&nbsp;</td><td>
+value which to set modname; [0] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to modname </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00135">135</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+Referenced by <a class="el" href="swmgr_8cpp-source.html#l00791">SWMgr::AddRawFilters</a>().
+<p>
+<div class="fragment"><pre>00136 {
+00137 <font class="keywordflow">return</font> stdstr(&amp;modname, imodname);
+00138 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="d0" doxytag="SWModule::nullPercent"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void SWModule::nullPercent </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>percent</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>userData</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This is the default callback function for searching.
+<p>
+This function is a placeholder and does nothing. You can define your own function for search progress evaluation, and pass it over to <a class="el" href="class_s_w_module.html#a22">Search</a>.
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00018">18</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+<div class="fragment"><pre>00018 {}
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a27" doxytag="SWModule::operator const char *"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWModule::operator const char * </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Renders and returns the current module text.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+the rendered current module text </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00662">662</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>().
+<p>
+<div class="fragment"><pre>00662 {
+00663 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a57">RenderText</a>();
+00664 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a29" doxytag="SWModule::operator SWKey &"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule::operator <a class="el" href="class_s_w_key.html">SWKey</a> &amp; </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Cast operator to cast to a <a class="el" href="class_s_w_key.html">SWKey</a> reference.
+<p>
+This operator may be used to cast this module to a <a class="el" href="class_s_w_key.html">SWKey</a> object. <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_s_w_key.html">SWKey</a>*() </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00322">322</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00322 {
+00323 <font class="keywordflow">return</font> *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00324 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a30" doxytag="SWModule::operator SWKey *"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule::operator <a class="el" href="class_s_w_key.html">SWKey</a> * </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Operator to cast to an <a class="el" href="class_s_w_key.html">SWKey</a> pointer.
+<p>
+This function may be used to cast this object to an <a class="el" href="class_s_w_key.html">SWKey</a> pointer. <div class="fragment"><pre> <font class="comment">//we assume here that SWModule* module is already defined and valid.</font>
+ <a class="code" href="class_s_w_key.html">SWKey</a>* currentKey = (<a class="code" href="class_s_w_key.html">SWKey</a>*)module;
+ <font class="comment">// do something with currentKey (e.g. print out on screen)</font>
+</pre></div>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00333">333</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00333 {
+00334 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00335 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a37" doxytag="SWModule::operator+="></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWModule &amp; SWModule::operator+= </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>increment</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Increments module key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>increment</em>&nbsp;</td><td>
+Number of entries to jump forward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00350">350</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), and <a class="el" href="swmodule_8h-source.html#l00077">key</a>.
+<p>
+<div class="fragment"><pre>00351 {
+00352 (*key) += increment;
+00353 error = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a6">Error</a>();
+00354
+00355 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00356 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a36" doxytag="SWModule::operator-="></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWModule &amp; SWModule::operator-= </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>decrement</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Decrements module key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>decrement</em>&nbsp;</td><td>
+Number of entries to jump backward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00367">367</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), and <a class="el" href="swmodule_8h-source.html#l00077">key</a>.
+<p>
+<div class="fragment"><pre>00368 {
+00369 (*key) -= increment;
+00370 error = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a6">Error</a>();
+00371
+00372 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00373 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a34" doxytag="SWModule::operator<<"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::operator&lt;&lt; </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Link the current module entry to another module entry only if module <a class="el" href="class_s_w_module.html#a31">isWritable</a>.
+<p>
+<ul>
+<li></ul>
+<dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00370">370</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00370 {
+00371 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00372 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a33" doxytag="SWModule::operator<<"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::operator&lt;&lt; </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Modify the current module entry text only if module <a class="el" href="class_s_w_module.html#a31">isWritable</a>.
+<p>
+<ul>
+<li></ul>
+<dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00363">363</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00363 {
+00364 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00365 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a40" doxytag="SWModule::operator="></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWModule &amp; SWModule::operator= </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SW_POSITION&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>p</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Positions this modules to an entry.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>p</em>&nbsp;</td><td>
+position (e.g. TOP, BOTTOM) </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00320">320</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), and <a class="el" href="swmodule_8h-source.html#l00077">key</a>.
+<p>
+<div class="fragment"><pre>00321 {
+00322 *<a class="code" href="class_s_w_module.html#n6">key</a> = p;
+00323 <font class="keywordtype">char</font> saveError = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a6">Error</a>();
+00324
+00325 <font class="keywordflow">switch</font> (p) {
+00326 <font class="keywordflow">case</font> POS_TOP:
+00327 (*this)++;
+00328 (*this)--;
+00329 <font class="keywordflow">break</font>;
+00330
+00331 <font class="keywordflow">case</font> POS_BOTTOM:
+00332 (*this)--;
+00333 (*this)++;
+00334 <font class="keywordflow">break</font>;
+00335 }
+00336
+00337 error = saveError;
+00338 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00339 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a55" doxytag="SWModule::optionFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void SWModule::optionFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OptionFilter a text buffer.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the buffer to filter </td></tr>
+<tr><td valign=top><em>size</em>&nbsp;</td><td>
+the allocated size of the buffer </td></tr>
+<tr><td valign=top><em>key</em>&nbsp;</td><td>
+key location from where this buffer was extracted </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00546">546</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>().
+<p>
+<div class="fragment"><pre>00546 {
+00547 <a class="code" href="class_s_w_module.html#a52">filterBuffer</a>(<a class="code" href="class_s_w_module.html#n21">optionFilters</a>, buf, size, key);
+00548 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a53" doxytag="SWModule::rawFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void SWModule::rawFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+RawFilter a text buffer.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the buffer to filter </td></tr>
+<tr><td valign=top><em>size</em>&nbsp;</td><td>
+the allocated size of the buffer </td></tr>
+<tr><td valign=top><em>key</em>&nbsp;</td><td>
+key location from where this buffer was extracted </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00528">528</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00528 {
+00529 buf[size] = 0;
+00530 <a class="code" href="class_s_w_module.html#a52">filterBuffer</a>(<a class="code" href="class_s_w_module.html#n19">rawFilters</a>, buf, size, key);
+00531 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a46" doxytag="SWModule::RemoveEncodingFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::RemoveEncodingFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>oldfilter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Removes an EncodingFilter from this module's.
+<p>
+<dl compact><dt><b>
+See also: </b><dd>
+encodingfilters queue </dl><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>oldfilter</em>&nbsp;</td><td>
+the filter to remove </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00459">459</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00459 {
+00460 <a class="code" href="class_s_w_module.html#n22">encodingFilters</a>-&gt;remove (oldfilter);
+00461 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00462 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a42" doxytag="SWModule::RemoveRenderFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::RemoveRenderFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>oldfilter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Removes a RenderFilter from this module's.
+<p>
+<dl compact><dt><b>
+See also: </b><dd>
+renderfilters queue </dl><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>oldfilter</em>&nbsp;</td><td>
+the filter to remove </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00422">422</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00422 {
+00423 <a class="code" href="class_s_w_module.html#n20">renderFilters</a>-&gt;remove (oldfilter);
+00424 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00425 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a44" doxytag="SWModule::renderFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void SWModule::renderFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+RenderFilter a text buffer.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the buffer to filter </td></tr>
+<tr><td valign=top><em>size</em>&nbsp;</td><td>
+the allocated size of the buffer </td></tr>
+<tr><td valign=top><em>key</em>&nbsp;</td><td>
+key location from where this buffer was extracted </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00444">444</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>().
+<p>
+<div class="fragment"><pre>00444 {
+00445 <a class="code" href="class_s_w_module.html#a52">filterBuffer</a>(<a class="code" href="class_s_w_module.html#n20">renderFilters</a>, buf, size, key);
+00446 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a59" doxytag="SWModule::RenderText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWModule::RenderText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>tmpKey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+calls all RenderFilters on current text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>tmpKey</em>&nbsp;</td><td>
+key to use to grab text </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+this module's text at specified key location massaged by Render filters </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00606">606</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00105">CreateKey</a>(), <a class="el" href="swmodule_8h-source.html#l00077">key</a>, <a class="el" href="swkey_8cpp-source.html#l00068">SWKey::Persist</a>(), <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00272">SetKey</a>().
+<p>
+<div class="fragment"><pre>00607 {
+00608 <a class="code" href="class_s_w_key.html">SWKey</a> *savekey;
+00609 <font class="keyword">const</font> <font class="keywordtype">char</font> *retVal;
+00610
+00611 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) {
+00612 savekey = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00613 *savekey = *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00614 }
+00615 <font class="keywordflow">else</font> savekey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00616
+00617 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*tmpKey);
+00618
+00619 retVal = <a class="code" href="class_s_w_module.html#a57">RenderText</a>();
+00620
+00621 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*savekey);
+00622
+00623 <font class="keywordflow">if</font> (!savekey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00624 <font class="keyword">delete</font> savekey;
+00625
+00626 <font class="keywordflow">return</font> retVal;
+00627 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a57" doxytag="SWModule::RenderText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWModule::RenderText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>len</em> = -1, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>render</em> = true</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+calls all RenderFilters on buffer or current text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+buffer to Render instead of current module position; if buf is NULL, the current text will be used </td></tr>
+<tr><td valign=top><em>len</em>&nbsp;</td><td>
+max len of buf OR current text -- will be applied anyway </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+this module's text at specified key location massaged by Render filters </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00570">570</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8h-source.html#l00481">encodingFilter</a>(), <a class="el" href="swmodule_8h-source.html#l00162">getEntrySize</a>(), <a class="el" href="class_s_w_module.html#a28">getRawEntry</a>(), <a class="el" href="swmodule_8h-source.html#l00077">key</a>, <a class="el" href="swmodule_8h-source.html#l00546">optionFilter</a>(), <a class="el" href="swmodule_8h-source.html#l00444">renderFilter</a>(), and <a class="el" href="swmodule_8h-source.html#l00498">stripFilter</a>().
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00662">operator const char *</a>(), <a class="el" href="swmodule_8cpp-source.html#l00606">RenderText</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00556">StripText</a>().
+<p>
+<div class="fragment"><pre>00570 {
+00571 entryAttributes.clear();
+00572 <font class="keywordtype">char</font> *tmpbuf = (buf) ? buf : <a class="code" href="class_s_w_module.html#a28">getRawEntry</a>();
+00573 <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_module.html#n6">key</a> = 0;
+00574 <font class="keyword">static</font> <font class="keywordtype">char</font> *null = <font class="stringliteral">""</font>;
+00575
+00576 <font class="keywordflow">if</font> (tmpbuf) {
+00577 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size = (len &lt; 0) ? ((<a class="code" href="class_s_w_module.html#a7">getEntrySize</a>()&lt;0) ? strlen(tmpbuf) : <a class="code" href="class_s_w_module.html#a7">getEntrySize</a>()) * FILTERPAD : len;
+00578 <font class="keywordflow">if</font> (size &gt; 0) {
+00579 key = (<a class="code" href="class_s_w_key.html">SWKey</a> *)*<font class="keyword">this</font>;
+00580
+00581 <a class="code" href="class_s_w_module.html#a55">optionFilter</a>(tmpbuf, size, key);
+00582
+00583 <font class="keywordflow">if</font> (render) {
+00584 <a class="code" href="class_s_w_module.html#a44">renderFilter</a>(tmpbuf, size, key);
+00585 <a class="code" href="class_s_w_module.html#a48">encodingFilter</a>(tmpbuf, size, key);
+00586 }
+00587 <font class="keywordflow">else</font> <a class="code" href="class_s_w_module.html#a50">stripFilter</a>(tmpbuf, size, key);
+00588 }
+00589 }
+00590 <font class="keywordflow">else</font> {
+00591 tmpbuf = null;
+00592 }
+00593
+00594 <font class="keywordflow">return</font> tmpbuf;
+00595 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a47" doxytag="SWModule::ReplaceEncodingFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::ReplaceEncodingFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>oldfilter</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWFilter *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>newfilter</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Replaces an EncodingFilter in this module's.
+<p>
+<dl compact><dt><b>
+See also: </b><dd>
+encodingfilters queue </dl><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>oldfilter</em>&nbsp;</td><td>
+the filter to remove </td></tr>
+<tr><td valign=top><em>newfilter</em>&nbsp;</td><td>
+the filter to add in its place </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00468">468</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00468 {
+00469 FilterList::iterator iter;
+00470 <font class="keywordflow">for</font> (iter = <a class="code" href="class_s_w_module.html#n22">encodingFilters</a>-&gt;begin(); iter != <a class="code" href="class_s_w_module.html#n22">encodingFilters</a>-&gt;end(); iter++)
+00471 <font class="keywordflow">if</font> (*iter == oldfilter)
+00472 *iter = newfilter;
+00473 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00474 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a43" doxytag="SWModule::ReplaceRenderFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::ReplaceRenderFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SWFilter *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>oldfilter</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWFilter *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>newfilter</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Replaces a RenderFilter in this module's.
+<p>
+<dl compact><dt><b>
+See also: </b><dd>
+renderfilters queue </dl><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>oldfilter</em>&nbsp;</td><td>
+the filter to remove </td></tr>
+<tr><td valign=top><em>newfilter</em>&nbsp;</td><td>
+the filter to add in its place </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00431">431</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00431 {
+00432 FilterList::iterator iter;
+00433 <font class="keywordflow">for</font> (iter = <a class="code" href="class_s_w_module.html#n20">renderFilters</a>-&gt;begin(); iter != <a class="code" href="class_s_w_module.html#n20">renderFilters</a>-&gt;end(); iter++)
+00434 <font class="keywordflow">if</font> (*iter == oldfilter)
+00435 *iter = newfilter;
+00436 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00437 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a22" doxytag="SWModule::Search"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="class_list_key.html">ListKey</a> &amp; SWModule::Search </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>istr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>searchType</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>flags</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>scope</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>bool *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>justCheckIfSupported</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>void(*&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>percent</em>)(char, void *) = &amp;nullPercent, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>percentUserData</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Searches a module for a string.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>istr</em>&nbsp;</td><td>
+string for which to search </td></tr>
+<tr><td valign=top><em>searchType</em>&nbsp;</td><td>
+type of search to perform &lt;=0 -&gt;regex; 1-&gt;phrase; 2-&gt;multiword; </td></tr>
+<tr><td valign=top><em>flags</em>&nbsp;</td><td>
+options flags for search </td></tr>
+<tr><td valign=top><em>justCheckIfSupported</em>&nbsp;</td><td>
+if set, don't search, only tell if this function supports requested search.</td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+listkey set to verses that contain istr </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00391">391</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="listkey_8cpp-source.html#l00064">ListKey::ClearList</a>(), <a class="el" href="swkey_8cpp-source.html#l00045">SWKey::clone</a>(), <a class="el" href="swmodule_8cpp-source.html#l00105">CreateKey</a>(), <a class="el" href="swmodule_8cpp-source.html#l00117">Error</a>(), <a class="el" href="swkey_8h-source.html#l00208">SWKey::Index</a>(), <a class="el" href="swmodule_8h-source.html#l00077">key</a>, <a class="el" href="swmodule_8cpp-source.html#l00303">KeyText</a>(), <a class="el" href="versekey_8cpp-source.html#l01300">VerseKey::NewIndex</a>(), <a class="el" href="swkey_8cpp-source.html#l00068">SWKey::Persist</a>(), <a class="el" href="swmodule_8cpp-source.html#l00272">SetKey</a>(), <a class="el" href="swmodule_8cpp-source.html#l00556">StripText</a>(), and <a class="el" href="swmodule_8h-source.html#l00125">terminateSearch</a>.
+<p>
+<div class="fragment"><pre>00392 {
+00393 <a class="code" href="class_s_w_key.html">SWKey</a> *savekey = 0;
+00394 <a class="code" href="class_s_w_key.html">SWKey</a> *searchkey = 0;
+00395 regex_t preg;
+00396 <a class="code" href="class_s_w_key.html">SWKey</a> textkey;
+00397 <font class="keywordtype">char</font> **words = 0;
+00398 <font class="keywordtype">char</font> *wordBuf = 0;
+00399 <font class="keywordtype">int</font> wordCount = 0;
+00400 <font class="keyword">const</font> <font class="keywordtype">char</font> *sres;
+00401 <a class="code" href="class_s_w_module.html#m0">terminateSearch</a> = <font class="keyword">false</font>;
+00402 <font class="keywordtype">char</font> perc = 1;
+00403 <font class="keywordtype">bool</font> savePEA = isProcessEntryAttributes();
+00404
+00405 processEntryAttributes(<font class="keyword">false</font>);
+00406 listkey.<a class="code" href="class_list_key.html#a4">ClearList</a>();
+00407
+00408 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) {
+00409 savekey = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00410 *savekey = *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00411 }
+00412 <font class="keywordflow">else</font> savekey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00413
+00414 searchkey = (scope)?scope-&gt;<a class="code" href="class_s_w_key.html#a3">clone</a>():(<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;Persist())?<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;clone():0;
+00415 <font class="keywordflow">if</font> (searchkey) {
+00416 searchkey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>(1);
+00417 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*searchkey);
+00418 }
+00419
+00420 (*percent)(perc, percentUserData);
+00421 <font class="comment">// MAJOR KLUDGE: VerseKey::Index still return index within testament.</font>
+00422 <font class="comment">// VerseKey::NewIndex should be moved to Index and Index should be some</font>
+00423 <font class="comment">// VerseKey specific name</font>
+00424 <a class="code" href="class_verse_key.html">VerseKey</a> *vkcheck = 0;
+00425 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00426 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00427 <font class="preprocessor">#endif</font>
+00428 <font class="preprocessor"></font> vkcheck = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, <a class="code" href="class_s_w_module.html#n6">key</a>);
+00429 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00430 <font class="preprocessor"></font> }
+00431 <font class="keywordflow">catch</font> (...) {}
+00432 <font class="preprocessor">#endif</font>
+00433 <font class="preprocessor"></font> <font class="comment">// end MAJOR KLUDGE</font>
+00434
+00435 *<font class="keyword">this</font> = BOTTOM;
+00436 <font class="comment">// fix below when we find out the bug</font>
+00437 <font class="keywordtype">long</font> highIndex = (vkcheck)?32300<font class="comment">/*vkcheck-&gt;NewIndex()*/</font>:<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00438 <font class="keywordflow">if</font> (!highIndex)
+00439 highIndex = 1; <font class="comment">// avoid division by zero errors.</font>
+00440 *<font class="keyword">this</font> = TOP;
+00441 <font class="keywordflow">if</font> (searchType &gt;= 0) {
+00442 flags |=searchType|REG_NOSUB|REG_EXTENDED;
+00443 regcomp(&amp;preg, istr, flags);
+00444 }
+00445
+00446 (*percent)(++perc, percentUserData);
+00447 <font class="keywordflow">if</font> (searchType == -2) {
+00448 wordBuf = (<font class="keywordtype">char</font> *)calloc(<font class="keyword">sizeof</font>(<font class="keywordtype">char</font>), strlen(istr) + 1);
+00449 strcpy(wordBuf, istr);
+00450 words = (<font class="keywordtype">char</font> **)calloc(<font class="keyword">sizeof</font>(<font class="keywordtype">char</font> *), 10);
+00451 <font class="keywordtype">int</font> allocWords = 10;
+00452 words[wordCount] = strtok(wordBuf, <font class="stringliteral">" "</font>);
+00453 <font class="keywordflow">while</font> (words[wordCount]) {
+00454 wordCount++;
+00455 <font class="keywordflow">if</font> (wordCount == allocWords) {
+00456 allocWords+=10;
+00457 words = (<font class="keywordtype">char</font> **)realloc(words, <font class="keyword">sizeof</font>(<font class="keywordtype">char</font> *)*allocWords);
+00458 }
+00459 words[wordCount] = strtok(NULL, <font class="stringliteral">" "</font>);
+00460 }
+00461 }
+00462
+00463 perc = 5;
+00464 (*percent)(perc, percentUserData);
+00465
+00466 <font class="keywordflow">while</font> (!<a class="code" href="class_s_w_module.html#a2">Error</a>() &amp;&amp; !<a class="code" href="class_s_w_module.html#m0">terminateSearch</a>) {
+00467
+00468
+00469 <font class="keywordtype">long</font> mindex = 0;
+00470 <font class="keywordflow">if</font> (vkcheck)
+00471 mindex = vkcheck-&gt;<a class="code" href="class_verse_key.html#a33">NewIndex</a>();
+00472 <font class="keywordflow">else</font> mindex = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00473 <font class="keywordtype">float</font> per = (float)mindex / highIndex;
+00474 per *= 93;
+00475 per += 5;
+00476 <font class="keywordtype">char</font> newperc = (char)per;
+00477 <font class="comment">// char newperc = (char)(5+(93*(((float)((vkcheck)?vkcheck-&gt;NewIndex():key-&gt;Index()))/highIndex)));</font>
+00478 <font class="keywordflow">if</font> (newperc &gt; perc) {
+00479 perc = newperc;
+00480 (*percent)(perc, percentUserData);
+00481 }
+00482 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (newperc &lt; perc) {
+00483 <font class="preprocessor">#ifndef _MSC_VER</font>
+00484 <font class="preprocessor"></font> cerr &lt;&lt; <font class="stringliteral">"Serious error: new percentage complete is less than previous value\n"</font>;
+00485 cerr &lt;&lt; <font class="stringliteral">"using vk? "</font> &lt;&lt; ((vkcheck)?<font class="stringliteral">"yes"</font>:<font class="stringliteral">"no"</font>) &lt;&lt; <font class="stringliteral">"\n"</font>;
+00486 cerr &lt;&lt; <font class="stringliteral">"index: "</font> &lt;&lt; ((vkcheck)?vkcheck-&gt;<a class="code" href="class_verse_key.html#a33">NewIndex</a>():<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;Index()) &lt;&lt; "\n";
+00487 cerr &lt;&lt; <font class="stringliteral">"highIndex: "</font> &lt;&lt; highIndex &lt;&lt; <font class="stringliteral">"\n"</font>;
+00488 cerr &lt;&lt; <font class="stringliteral">"newperc =="</font> &lt;&lt; (int)newperc &lt;&lt; <font class="stringliteral">"%"</font> &lt;&lt; <font class="stringliteral">"is smaller than\n"</font>;
+00489 cerr &lt;&lt; <font class="stringliteral">"perc == "</font> &lt;&lt; (int )perc &lt;&lt; <font class="stringliteral">"% \n"</font>;
+00490 <font class="preprocessor">#endif</font>
+00491 <font class="preprocessor"></font> }
+00492 <font class="keywordflow">if</font> (searchType &gt;= 0) {
+00493 <font class="keywordflow">if</font> (!regexec(&amp;preg, <a class="code" href="class_s_w_module.html#a56">StripText</a>(), 0, 0, 0)) {
+00494 textkey = <a class="code" href="class_s_w_module.html#a12">KeyText</a>();
+00495 listkey &lt;&lt; textkey;
+00496 }
+00497 }
+00498 <font class="keywordflow">else</font> {
+00499 <font class="keywordflow">if</font> (searchType == -1) {
+00500 sres = ((flags &amp; REG_ICASE) == REG_ICASE) ? stristr(<a class="code" href="class_s_w_module.html#a56">StripText</a>(), istr) : strstr(<a class="code" href="class_s_w_module.html#a56">StripText</a>(), istr);
+00501 <font class="keywordflow">if</font> (sres) {
+00502 textkey = <a class="code" href="class_s_w_module.html#a12">KeyText</a>();
+00503 listkey &lt;&lt; textkey;
+00504 }
+00505 }
+00506 <font class="keywordflow">if</font> (searchType == -2) {
+00507 <font class="keywordtype">int</font> i;
+00508 <font class="keyword">const</font> <font class="keywordtype">char</font> *stripBuf = <a class="code" href="class_s_w_module.html#a56">StripText</a>();
+00509 <font class="keywordflow">for</font> (i = 0; i &lt; wordCount; i++) {
+00510 sres = ((flags &amp; REG_ICASE) == REG_ICASE) ? stristr(stripBuf, words[i]) : strstr(stripBuf, words[i]);
+00511 <font class="keywordflow">if</font> (!sres)
+00512 <font class="keywordflow">break</font>;
+00513 }
+00514 <font class="keywordflow">if</font> (i == wordCount) {
+00515 textkey = <a class="code" href="class_s_w_module.html#a12">KeyText</a>();
+00516 listkey &lt;&lt; textkey;
+00517 }
+00518
+00519 }
+00520 }
+00521 (*this)++;
+00522 }
+00523 <font class="keywordflow">if</font> (searchType &gt;= 0)
+00524 regfree(&amp;preg);
+00525
+00526 <font class="keywordflow">if</font> (searchType == -2) {
+00527 free(words);
+00528 free(wordBuf);
+00529 }
+00530
+00531 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*savekey);
+00532
+00533 <font class="keywordflow">if</font> (!savekey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00534 <font class="keyword">delete</font> savekey;
+00535
+00536 <font class="keywordflow">if</font> (searchkey)
+00537 <font class="keyword">delete</font> searchkey;
+00538
+00539 listkey = TOP;
+00540 processEntryAttributes(savePEA);
+00541 (*percent)(100, percentUserData);
+00542
+00543 <font class="keywordflow">return</font> listkey;
+00544 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a32" doxytag="SWModule::setentry"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual SWModule&amp; SWModule::setentry </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>inbuf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>len</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Modify the current module entry text only if module <a class="el" href="class_s_w_module.html#a31">isWritable</a>.
+<p>
+<ul>
+<li></ul>
+<dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00356">356</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00356 {
+00357 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00358 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a9" doxytag="SWModule::SetKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWModule::SetKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets the key of this module.
+<p>
+Similair to <dl compact><dt><b>
+See also: </b><dd>
+<a class="el" href="class_s_w_module.html#a8">SetKey</a>(const SWKey*) . </dl><dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+The <a class="el" href="class_s_w_key.html">SWKey</a> which should be used as new key. </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+Error status </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00268">268</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00272">SetKey</a>().
+<p>
+<div class="fragment"><pre>00268 {
+00269 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a8">SetKey</a>(&amp;ikey);
+00270 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a8" doxytag="SWModule::SetKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char SWModule::SetKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets a key to this module for position to a particular record or set of records.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+key with which to set this module </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+error status </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00272">272</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00105">CreateKey</a>(), <a class="el" href="swmodule_8h-source.html#l00077">key</a>, and <a class="el" href="swkey_8cpp-source.html#l00068">SWKey::Persist</a>().
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00303">KeyText</a>(), <a class="el" href="swmodule_8cpp-source.html#l00606">RenderText</a>(), <a class="el" href="swmodule_8cpp-source.html#l00391">Search</a>(), <a class="el" href="swmodule_8cpp-source.html#l00268">SetKey</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00638">StripText</a>().
+<p>
+<div class="fragment"><pre>00273 {
+00274 <a class="code" href="class_s_w_key.html">SWKey</a> *oldKey = 0;
+00275
+00276 <font class="keywordflow">if</font> (key) {
+00277 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) <font class="comment">// if we have our own copy</font>
+00278 oldKey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00279 }
+00280
+00281 <font class="keywordflow">if</font> (!ikey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) { <font class="comment">// if we are to keep our own copy</font>
+00282 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00283 *<a class="code" href="class_s_w_module.html#n6">key</a> = *ikey;
+00284 }
+00285 <font class="keywordflow">else</font> <a class="code" href="class_s_w_module.html#n6">key</a> = (<a class="code" href="class_s_w_key.html">SWKey</a> *)ikey; <font class="comment">// if we are to just point to an external key</font>
+00286
+00287 <font class="keywordflow">if</font> (oldKey)
+00288 <font class="keyword">delete</font> oldKey;
+00289
+00290 <font class="keywordflow">return</font> 0;
+00291 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a60" doxytag="SWModule::setSkipConsecutiveLinks"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void SWModule::setSkipConsecutiveLinks </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>val</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+option to specify behaviour when iterating over consecutive entried linked to same text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>val</em>&nbsp;</td><td>
+= true means only include entry once in iteration </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00584">584</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+<div class="fragment"><pre>00584 { skipConsecutiveLinks = val; }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a50" doxytag="SWModule::stripFilter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void SWModule::stripFilter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+StripFilter a text buffer.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the buffer to filter </td></tr>
+<tr><td valign=top><em>size</em>&nbsp;</td><td>
+the allocated size of the buffer </td></tr>
+<tr><td valign=top><em>key</em>&nbsp;</td><td>
+key location from where this buffer was extracted </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00498">498</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>().
+<p>
+<div class="fragment"><pre>00498 {
+00499 <a class="code" href="class_s_w_module.html#a52">filterBuffer</a>(<a class="code" href="class_s_w_module.html#n18">stripFilters</a>, buf, size, key);
+00500 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a58" doxytag="SWModule::StripText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWModule::StripText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>tmpKey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+calls all StripFilters on current text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>tmpKey</em>&nbsp;</td><td>
+key to use to grab text </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+this module's text at specified key location massaged by Strip filters </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00638">638</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00105">CreateKey</a>(), <a class="el" href="swmodule_8h-source.html#l00077">key</a>, <a class="el" href="swkey_8cpp-source.html#l00068">SWKey::Persist</a>(), <a class="el" href="swmodule_8cpp-source.html#l00272">SetKey</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00556">StripText</a>().
+<p>
+<div class="fragment"><pre>00639 {
+00640 <a class="code" href="class_s_w_key.html">SWKey</a> *savekey;
+00641 <font class="keyword">const</font> <font class="keywordtype">char</font> *retVal;
+00642
+00643 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) {
+00644 savekey = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00645 *savekey = *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00646 }
+00647 <font class="keywordflow">else</font> savekey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00648
+00649 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*tmpKey);
+00650
+00651 retVal = <a class="code" href="class_s_w_module.html#a56">StripText</a>();
+00652
+00653 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*savekey);
+00654
+00655 <font class="keywordflow">if</font> (!savekey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00656 <font class="keyword">delete</font> savekey;
+00657
+00658 <font class="keywordflow">return</font> retVal;
+00659 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a56" doxytag="SWModule::StripText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const char * SWModule::StripText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>len</em> = -1</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+calls all StripFilters on buffer or current text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+buf to massage instead of current module position; if buf is NULL, the current text will be used </td></tr>
+<tr><td valign=top><em>len</em>&nbsp;</td><td>
+max len of buf OR current text -- will be applied anyway </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+this module's text at specified key location massaged by Strip filters </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00556">556</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00570">RenderText</a>().
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00391">Search</a>(), and <a class="el" href="swmodule_8cpp-source.html#l00638">StripText</a>().
+<p>
+<div class="fragment"><pre>00557 {
+00558 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a57">RenderText</a>(buf, len, <font class="keyword">false</font>);
+00559 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a17" doxytag="SWModule::Type"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char * SWModule::Type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>imodtype</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets module type.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodtype</em>&nbsp;</td><td>
+value which to set modtype; [0] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+pointer to modtype </dl>
+<p>
+Definition at line <a class="el" href="swmodule_8cpp-source.html#l00165">165</a> of file <a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a>.
+<p>
+<div class="fragment"><pre>00166 {
+00167 <font class="keywordflow">return</font> stdstr(&amp;modtype, imodtype);
+00168 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Data Documentation</h2>
+<a name="m0" doxytag="SWModule::terminateSearch"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool SWModule::terminateSearch
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set this bool to false to terminate the search which is executed by this module (<a class="el" href="class_s_w_module.html#a22">Search</a>).
+<p>
+This is useful for threaded applications to terminate the search in another thread.
+<p>
+Definition at line <a class="el" href="swmodule_8h-source.html#l00125">125</a> of file <a class="el" href="swmodule_8h-source.html">swmodule.h</a>.
+<p>
+Referenced by <a class="el" href="swmodule_8cpp-source.html#l00391">Search</a>(). </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swmodule_8h-source.html">swmodule.h</a><li><a class="el" href="swmodule_8cpp-source.html">swmodule.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_module__coll__graph.png b/doc/api-documentation/html/class_s_w_module__coll__graph.png
new file mode 100644
index 0000000..cca0c79
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_module__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_module__inherit__graph.png b/doc/api-documentation/html/class_s_w_module__inherit__graph.png
new file mode 100644
index 0000000..d2567c2
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_module__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_object-members.html b/doc/api-documentation/html/class_s_w_object-members.html
new file mode 100644
index 0000000..f803bc7
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_object-members.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWObject Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_object.html">SWObject</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_object.html b/doc/api-documentation/html/class_s_w_object.html
new file mode 100644
index 0000000..87e0321
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_object.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWObject class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWObject Class Reference</h1>Base class for major Sword classes.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swobject_8h-source.html">swobject.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWObject:<p><center><img src="class_s_w_object__inherit__graph.png" border="0" usemap="#_s_w_object__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_object__inherit__map">
+<area href="class_s_w_display.html" shape="rect" coords="30,85,105,103" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="129,85,185,103" alt="">
+<area href="class_list_key.html" shape="rect" coords="14,154,67,173" alt="">
+<area href="class_str_key.html" shape="rect" coords="91,154,142,173" alt="">
+<area href="class_tree_key.html" shape="rect" coords="166,154,227,173" alt="">
+<area href="class_verse_key.html" shape="rect" coords="251,154,321,173" alt="">
+<area href="class_tree_key_idx.html" shape="rect" coords="158,223,235,242" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWObject:<p><center><img src="class_s_w_object__coll__graph.png" border="0" usemap="#_s_w_object__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_object__coll__map">
+<area href="class_s_w_class.html" shape="rect" coords="18,15,82,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_object-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>const <a class="el" href="class_s_w_class.html">SWClass</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_object.html#a0">getClass</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Use this to get the class definition and inheritance order.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="n0" doxytag="SWObject::myclass"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a> *&nbsp;</td><td valign=bottom><b>myclass</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Base class for major Sword classes.
+<p>
+SWObject is the base class for major Sword classes like <a class="el" href="class_s_w_key.html">SWKey</a>. It is used because dynamic_cast is not available on all plattforms supported by Sword. Use SWDYNAMIC_CAST(classname, object) instead of dynamic_cast&lt;classname&gt;(object).
+<p>
+
+<p>
+Definition at line <a class="el" href="swobject_8h-source.html#l00041">41</a> of file <a class="el" href="swobject_8h-source.html">swobject.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="a0" doxytag="SWObject::getClass"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const <a class="el" href="class_s_w_class.html">SWClass</a>* SWObject::getClass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Use this to get the class definition and inheritance order.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+The class definition of this object </dl>
+<p>
+Definition at line <a class="el" href="swobject_8h-source.html#l00049">49</a> of file <a class="el" href="swobject_8h-source.html">swobject.h</a>.
+<p>
+<div class="fragment"><pre>00049 {
+00050 <font class="keywordflow">return</font> myclass;
+00051 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="swobject_8h-source.html">swobject.h</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_object__coll__graph.png b/doc/api-documentation/html/class_s_w_object__coll__graph.png
new file mode 100644
index 0000000..5c459bb
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_object__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_object__inherit__graph.png b/doc/api-documentation/html/class_s_w_object__inherit__graph.png
new file mode 100644
index 0000000..4e1441f
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_object__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_text-members.html b/doc/api-documentation/html/class_s_w_text-members.html
new file mode 100644
index 0000000..34e99eb
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_text-members.html
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWText Member List</h1>This is the complete list of members for <a class="el" href="class_s_w_text.html">SWText</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a45">AddEncodingFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a54">AddOptionFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a51">AddRawFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a41">AddRenderFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a49">AddStripFilter</a>(SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>config</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_text.html#a2">CreateKey</a>()</td><td><a class="el" href="class_s_w_text.html">SWText</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d1">createModule</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>createSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a35">deleteEntry</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a16">Description</a>(const char *imoddesc=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>direction</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a18">Direction</a>(signed char newdir=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n15">disp</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a14">Disp</a>(SWDisplay *idisp=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a13">Display</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>encoding</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a19">Encoding</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a48">encodingFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n22">encodingFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entryAttributes</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybuf</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrybufallocsize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>entrySize</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a2">Error</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a52">filterBuffer</a>(FilterList *filters, char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>flush</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfig</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getConfigEntry</b>(const char *key) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a7">getEntrySize</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a28">getRawEntry</a>()=0</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getSkipConsecutiveLinks</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>hasSearchFramework</b>() (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>isProcessEntryAttributes</b>() const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a25">isSearchOptimallySupported</a>(const char *istr, int searchType, int flags, SWKey *scope)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a3">isUnicode</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a31">isWritable</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a10">Key</a>() const</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a11">Key</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n6">key</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a12">KeyText</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a21">Lang</a>(const char *imodlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>lastAccess</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>listkey</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>markup</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a20">Markup</a>(signed char enc=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>moddesc</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modlang</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modname</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>modtype</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a15">Name</a>(const char *imodname=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#d0">nullPercent</a>(char percent, void *userData)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a27">operator const char *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a29">operator SWKey &amp;</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a30">operator SWKey *</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a38">operator++</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a37">operator+=</a>(int increment)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a39">operator--</a>(int)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a36">operator-=</a>(int decrement)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a33">operator&lt;&lt;</a>(const char *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a34">operator&lt;&lt;</a>(const SWKey *)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a40">operator=</a>(SW_POSITION p)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a55">optionFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n21">optionFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ownConfig</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>procEntAttr</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>processEntryAttributes</b>(bool val) const (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>rawdisp</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a53">rawFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n19">rawFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a46">RemoveEncodingFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a42">RemoveRenderFilter</a>(SWFilter *oldfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a44">renderFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n20">renderFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a57">RenderText</a>(char *buf=0, int len=-1, bool render=true)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a59">RenderText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a47">ReplaceEncodingFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a43">ReplaceRenderFilter</a>(SWFilter *oldfilter, SWFilter *newfilter)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resourceConsumption</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a22">Search</a>(const char *istr, int searchType=0, int flags=0, SWKey *scope=0, bool *justCheckIfSupported=0, void(*percent)(char, void *)=&amp;nullPercent, void *percentUserData=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setConfig</b>(ConfigEntMap *config) (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a32">setentry</a>(const char *inbuf, long len)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a8">SetKey</a>(const SWKey *ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a9">SetKey</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a60">setSkipConsecutiveLinks</a>(bool val)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>skipConsecutiveLinks</b> (defined in <a class="el" href="class_s_w_module.html">SWModule</a>)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a50">stripFilter</a>(char *buf, long size, SWKey *key)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#n18">stripFilters</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a56">StripText</a>(char *buf=0, int len=-1)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a58">StripText</a>(SWKey *tmpKey)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a0">SWModule</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, char *imodtype=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *modlang=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_text.html#a0">SWText</a>(const char *imodname=0, const char *imoddesc=0, SWDisplay *idisp=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *ilang=0)</td><td><a class="el" href="class_s_w_text.html">SWText</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#m0">terminateSearch</a></td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a17">Type</a>(const char *imodtype=0)</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWCacher</b>() (defined in <b>SWCacher</b>)</td><td><a class="el" href="class_s_w_cacher.html">SWCacher</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_module.html#a1">~SWModule</a>()</td><td><a class="el" href="class_s_w_module.html">SWModule</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWText</b>() (defined in <a class="el" href="class_s_w_text.html">SWText</a>)</td><td><a class="el" href="class_s_w_text.html">SWText</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_text.html b/doc/api-documentation/html/class_s_w_text.html
new file mode 100644
index 0000000..1efe8ff
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_text.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>SWText class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>SWText Class Reference</h1>The basis for all text modules.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="swtext_8h-source.html">swtext.h</a>&gt;</code>
+<p>
+Inheritance diagram for SWText:<p><center><img src="class_s_w_text__inherit__graph.png" border="0" usemap="#_s_w_text__inherit__map" alt="Inheritance graph"></center>
+<map name="_s_w_text__inherit__map">
+<area href="class_s_w_module.html" shape="rect" coords="14,15,89,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for SWText:<p><center><img src="class_s_w_text__coll__graph.png" border="0" usemap="#_s_w_text__coll__map" alt="Collaboration graph"></center>
+<map name="_s_w_text__coll__map">
+<area href="class_s_w_module.html" shape="rect" coords="193,391,267,410" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,294,129,313" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="122,197,178,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,125" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="273,197,347,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="145,15,209,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_s_w_text-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_text.html#a0">SWText</a> (const char *imodname=0, const char *imoddesc=0, <a class="el" href="class_s_w_display.html">SWDisplay</a> *idisp=0, SWTextEncoding encoding=ENC_UNKNOWN, SWTextDirection dir=DIRECTION_LTR, SWTextMarkup markup=FMT_UNKNOWN, const char *ilang=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Initializes data for instance of SWText.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="SWText::~SWText"></a>
+virtual&nbsp;</td><td valign=bottom><b>~SWText</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="SWText::CreateKey"></a>
+virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_s_w_text.html#a2">CreateKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Create the correct key (<a class="el" href="class_verse_key.html">VerseKey</a>) for use with SWText.</em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The basis for all text modules.
+<p>
+
+<p>
+Definition at line <a class="el" href="swtext_8h-source.html#l00034">34</a> of file <a class="el" href="swtext_8h-source.html">swtext.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="SWText::SWText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> SWText::SWText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imodname</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>imoddesc</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="class_s_w_display.html">SWDisplay</a> *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>idisp</em> = 0, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextEncoding&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>encoding</em> = ENC_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextDirection&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>dir</em> = DIRECTION_LTR, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>SWTextMarkup&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>markup</em> = FMT_UNKNOWN, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>ilang</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Initializes data for instance of SWText.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>imodname</em>&nbsp;</td><td>
+Internal name for module </td></tr>
+<tr><td valign=top><em>imoddesc</em>&nbsp;</td><td>
+Name to display to user for module </td></tr>
+<tr><td valign=top><em>idisp</em>&nbsp;</td><td>
+Display object to use for displaying </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="swtext_8cpp-source.html#l00017">17</a> of file <a class="el" href="swtext_8cpp-source.html">swtext.cpp</a>.
+<p>
+References <a class="el" href="swtext_8cpp-source.html#l00036">CreateKey</a>(), and <a class="el" href="swmodule_8h-source.html#l00077">SWModule::key</a>.
+<p>
+<div class="fragment"><pre>00017 : <a class="code" href="class_s_w_module.html#a0">SWModule</a>(imodname, imoddesc, idisp, <font class="stringliteral">"Biblical Texts"</font>, enc, dir, mark, ilang)
+00018 {
+00019 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00020 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_text.html#a2">CreateKey</a>();
+00021 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="swtext_8h-source.html">swtext.h</a><li><a class="el" href="swtext_8cpp-source.html">swtext.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_s_w_text__coll__graph.png b/doc/api-documentation/html/class_s_w_text__coll__graph.png
new file mode 100644
index 0000000..338dd42
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_text__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_s_w_text__inherit__graph.png b/doc/api-documentation/html/class_s_w_text__inherit__graph.png
new file mode 100644
index 0000000..d92778d
--- /dev/null
+++ b/doc/api-documentation/html/class_s_w_text__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_str_key-members.html b/doc/api-documentation/html/class_str_key-members.html
new file mode 100644
index 0000000..e8afa39
--- /dev/null
+++ b/doc/api-documentation/html/class_str_key-members.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>StrKey Member List</h1>This is the complete list of members for <a class="el" href="class_str_key.html">StrKey</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>classdef</b> (defined in <a class="el" href="class_str_key.html">StrKey</a>)</td><td><a class="el" href="class_str_key.html">StrKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a3">clone</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a11">compare</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a8">copyFrom</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a14">decrement</a>(int steps=1)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a12">equals</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a6">Error</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getShortText</b>() const (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a9">getText</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a15">increment</a>(int steps=1)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a17">Index</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Index</b>(long iindex) (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>init</b>() (defined in <a class="el" href="class_str_key.html">StrKey</a>)</td><td><a class="el" href="class_str_key.html">StrKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>keytext</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>persist</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a4">Persist</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a5">Persist</a>(signed char ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setPosition</b>(SW_POSITION) (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a7">setText</a>(const char *ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_str_key.html#a0">StrKey</a>(const char *ikey=0)</td><td><a class="el" href="class_str_key.html">StrKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a0">SWKey</a>(const char *ikey=0)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a1">SWKey</a>(SWKey const &amp;k)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Traversable</b>() (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>userData</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_str_key.html#a1">~StrKey</a>()</td><td><a class="el" href="class_str_key.html">StrKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a2">~SWKey</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_str_key.html b/doc/api-documentation/html/class_str_key.html
new file mode 100644
index 0000000..8f5f499
--- /dev/null
+++ b/doc/api-documentation/html/class_str_key.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>StrKey class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>StrKey Class Reference</h1>a standard string key class (used for modules that index on single strings (eg.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="strkey_8h-source.html">strkey.h</a>&gt;</code>
+<p>
+Inheritance diagram for StrKey:<p><center><img src="class_str_key__inherit__graph.png" border="0" usemap="#_str_key__inherit__map" alt="Inheritance graph"></center>
+<map name="_str_key__inherit__map">
+<area href="class_s_w_key.html" shape="rect" coords="22,84,78,103" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="14,15,86,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for StrKey:<p><center><img src="class_str_key__coll__graph.png" border="0" usemap="#_str_key__coll__map" alt="Collaboration graph"></center>
+<map name="_str_key__coll__map">
+<area href="class_s_w_key.html" shape="rect" coords="107,196,163,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,124" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="103,15,167,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_str_key-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_str_key.html#a0">StrKey</a> (const char *ikey=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>initializes instance of StrKey.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="StrKey::~StrKey"></a>
+virtual&nbsp;</td><td valign=bottom><a class="el" href="class_str_key.html#a1">~StrKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>cleans up instance of StrKey.</em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="StrKey::init"></a>
+void&nbsp;</td><td valign=bottom><b>init</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="StrKey::classdef"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;</td><td valign=bottom><b>classdef</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+a standard string key class (used for modules that index on single strings (eg.
+<p>
+cities, names, words, etc.)
+<p>
+
+<p>
+Definition at line <a class="el" href="strkey_8h-source.html#l00035">35</a> of file <a class="el" href="strkey_8h-source.html">strkey.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="StrKey::StrKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> StrKey::StrKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+initializes instance of StrKey.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+text key (word, city, name, etc.) </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="strkey_8cpp-source.html#l00023">23</a> of file <a class="el" href="strkey_8cpp-source.html">strkey.cpp</a>.
+<p>
+<div class="fragment"><pre>00023 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>(ikey)
+00024 {
+00025 init();
+00026 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="strkey_8h-source.html">strkey.h</a><li><a class="el" href="strkey_8cpp-source.html">strkey.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:02 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_str_key__coll__graph.png b/doc/api-documentation/html/class_str_key__coll__graph.png
new file mode 100644
index 0000000..aa42765
--- /dev/null
+++ b/doc/api-documentation/html/class_str_key__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_str_key__inherit__graph.png b/doc/api-documentation/html/class_str_key__inherit__graph.png
new file mode 100644
index 0000000..7368fa6
--- /dev/null
+++ b/doc/api-documentation/html/class_str_key__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_th_m_l_footnotes-members.html b/doc/api-documentation/html/class_th_m_l_footnotes-members.html
new file mode 100644
index 0000000..a722e82
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_footnotes-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLFootnotes Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLFootnotes</b>() (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLFootnotes</b>() (defined in <a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>)</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_footnotes.html b/doc/api-documentation/html/class_th_m_l_footnotes.html
new file mode 100644
index 0000000..91f1942
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_footnotes.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLFootnotes class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLFootnotes Class Reference</h1>This Filter shows/hides footnotes in a ThML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlfootnotes_8h-source.html">thmlfootnotes.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_footnotes-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLFootnotes::ThMLFootnotes"></a>
+&nbsp;</td><td valign=bottom><b>ThMLFootnotes</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLFootnotes::~ThMLFootnotes"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLFootnotes</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLFootnotes::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="ThMLFootnotes::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ThMLFootnotes::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="ThMLFootnotes::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ThMLFootnotes::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="ThMLFootnotes::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="ThMLFootnotes::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="ThMLFootnotes::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ThMLFootnotes::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="ThMLFootnotes::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="ThMLFootnotes::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Footnotes"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="ThMLFootnotes::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Footnotes On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides footnotes in a ThML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlfootnotes_8h-source.html#l00030">30</a> of file <a class="el" href="thmlfootnotes_8h-source.html">thmlfootnotes.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlfootnotes_8h-source.html">thmlfootnotes.h</a><li><a class="el" href="thmlfootnotes_8cpp-source.html">thmlfootnotes.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_g_b_f-members.html b/doc/api-documentation/html/class_th_m_l_g_b_f-members.html
new file mode 100644
index 0000000..79dc2f3
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_g_b_f-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLGBF Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a>)</td><td><a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLGBF</b>() (defined in <a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a>)</td><td><a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_g_b_f.html b/doc/api-documentation/html/class_th_m_l_g_b_f.html
new file mode 100644
index 0000000..b6c97b8
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_g_b_f.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLGBF class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLGBF Class Reference</h1>this filter converts ThML text to GBF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlgbf_8h-source.html">thmlgbf.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_g_b_f-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLGBF::ThMLGBF"></a>
+&nbsp;</td><td valign=bottom><b>ThMLGBF</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLGBF::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen=-1)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to GBF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlgbf_8h-source.html#l00030">30</a> of file <a class="el" href="thmlgbf_8h-source.html">thmlgbf.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlgbf_8h-source.html">thmlgbf.h</a><li><a class="el" href="thmlgbf_8cpp-source.html">thmlgbf.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l-members.html b/doc/api-documentation/html/class_th_m_l_h_t_m_l-members.html
new file mode 100644
index 0000000..22d19fb
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l-members.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLHTML Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>addEscapeStringSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>addTokenSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>DualStringMap</b> typedef (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b14">handleEscapeString</a>(char **buf, const char *escString, DualStringMap &amp;userData)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_th_m_l_h_t_m_l.html#b0">handleToken</a>(char **buf, const char *token, DualStringMap &amp;userData)</td><td><a class="el" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>key</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>module</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b12">pushString</a>(char **buf, const char *format,...)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resultBuffer</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b1">setEscapeEnd</a>(const char *escEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b0">setEscapeStart</a>(const char *escStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setEscapeStringCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b5">setPassThruUnknownEscapeString</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b4">setPassThruUnknownToken</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setTokenCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b3">setTokenEnd</a>(const char *tokenEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b2">setTokenStart</a>(const char *tokenStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteEscapeString</b>(char **buf, const char *escString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteToken</b>(char **buf, const char *token) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLHTML</b>() (defined in <a class="el" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a>)</td><td><a class="el" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l.html b/doc/api-documentation/html/class_th_m_l_h_t_m_l.html
new file mode 100644
index 0000000..2c0266f
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l.html
@@ -0,0 +1,189 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLHTML class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLHTML Class Reference</h1>this filter converts ThML text to HTML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlhtml_8h-source.html">thmlhtml.h</a>&gt;</code>
+<p>
+Inheritance diagram for ThMLHTML:<p><center><img src="class_th_m_l_h_t_m_l__inherit__graph.png" border="0" usemap="#_th_m_l_h_t_m_l__inherit__map" alt="Inheritance graph"></center>
+<map name="_th_m_l_h_t_m_l__inherit__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="14,15,110,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for ThMLHTML:<p><center><img src="class_th_m_l_h_t_m_l__coll__graph.png" border="0" usemap="#_th_m_l_h_t_m_l__coll__map" alt="Collaboration graph"></center>
+<map name="_th_m_l_h_t_m_l__coll__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="206,481,302,500" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="150,196,206,215" alt="">
+<area href="class_s_w_module.html" shape="rect" coords="179,391,254,409" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,293,129,312" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="226,105,298,124" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="309,196,383,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="151,15,215,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_th_m_l_h_t_m_l-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLHTML::ThMLHTML"></a>
+&nbsp;</td><td valign=bottom><b>ThMLHTML</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_th_m_l_h_t_m_l.html#b0">handleToken</a> (char **buf, const char *token, DualStringMap &amp;userData)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is called for every token encountered in the input text.</em> <a href="#b0">More...</a><em></em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to HTML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlhtml_8h-source.html#l00028">28</a> of file <a class="el" href="thmlhtml_8h-source.html">thmlhtml.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="b0" doxytag="ThMLHTML::handleToken"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool ThMLHTML::handleToken </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>token</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>DualStringMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>userData</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is called for every token encountered in the input text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the output buffer (FIXME: what is its size?) </td></tr>
+<tr><td valign=top><em>token</em>&nbsp;</td><td>
+the token (e.g. <code>"p align='left'"</code> </td></tr>
+<tr><td valign=top><em>userData</em>&nbsp;</td><td>
+FIXME: document this </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+<code>false</code> if was not handled and should be handled in the default way (by just substituting). </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_basic_filter.html#b13">SWBasicFilter</a>.
+<p>
+Definition at line <a class="el" href="thmlhtml_8cpp-source.html#l00137">137</a> of file <a class="el" href="thmlhtml_8cpp-source.html">thmlhtml.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00667">SWModule::getConfigEntry</a>(), and <a class="el" href="swbasicfilter_8cpp-source.html#l00110">SWBasicFilter::pushString</a>().
+<p>
+<div class="fragment"><pre>00137 {
+00138 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00139 <font class="comment">// manually process if it wasn't a simple substitution</font>
+00140 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\""</font>, 27)) {
+00141 <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'H'</font> || token[27] == <font class="charliteral">'G'</font> || token[27] == <font class="charliteral">'A'</font>) {
+00142 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;em&gt;"</font>);
+00143 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 5; *tok; tok++)
+00144 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00145 *(*buf)++ = *tok;
+00146 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/em&gt;&lt;/small&gt;"</font>);
+00147 }
+00148 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'T'</font>) {
+00149 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;i&gt;"</font>);
+00150 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 29; token[i] != <font class="charliteral">'\"'</font>; i++)
+00151 *(*buf)++ = token[i];
+00152 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/i&gt;&lt;/small&gt;"</font>);
+00153 }
+00154 }
+00155 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\" value=\""</font>, 25)) {
+00156 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;em&gt;"</font>);
+00157 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00158 *(*buf)++ = token[i];
+00159 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/em&gt;&lt;/small&gt;"</font>);
+00160 }
+00161 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"lemma\" value=\""</font>, 25)) {
+00162 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;em&gt;("</font>);
+00163 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00164 *(*buf)++ = token[i];
+00165 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")&lt;/em&gt;&lt;/small&gt;"</font>);
+00166 }
+00167 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00168 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00169 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 9; *tok; tok++)
+00170 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00171 *(*buf)++ = *tok;
+00172 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00173 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00174 }
+00175 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"img "</font>, 4)) {
+00176 <font class="keyword">const</font> <font class="keywordtype">char</font> *src = strstr(token, <font class="stringliteral">"src"</font>);
+00177 <font class="keywordflow">if</font> (!src) <font class="comment">// assert we have a src attribute</font>
+00178 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00179
+00180 *(*buf)++ = <font class="charliteral">'&lt;'</font>;
+00181 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *c = token; *c; c++) {
+00182 <font class="keywordflow">if</font> (c == src) {
+00183 <font class="keywordflow">for</font> (;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++)
+00184 *(*buf)++ = *c;
+00185
+00186 <font class="keywordflow">if</font> (!*c) { c--; <font class="keywordflow">continue</font>; }
+00187
+00188 *(*buf)++ = <font class="charliteral">'"'</font>;
+00189 <font class="keywordflow">if</font> (*(c+1) == <font class="charliteral">'/'</font>) {
+00190 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"file:"</font>);
+00191 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, module-&gt;<a class="code" href="class_s_w_module.html#a6">getConfigEntry</a>(<font class="stringliteral">"AbsoluteDataPath"</font>));
+00192 <font class="keywordflow">if</font> (*((*buf)-1) == <font class="charliteral">'/'</font>)
+00193 c++; <font class="comment">// skip '/'</font>
+00194 }
+00195 <font class="keywordflow">continue</font>;
+00196 }
+00197 *(*buf)++ = *c;
+00198 }
+00199 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00200 }
+00201 <font class="keywordflow">else</font> <font class="keywordflow">if</font>(!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00202 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;font color=\"#800000\"&gt;&lt;small&gt;("</font>);
+00203 }
+00204
+00205 <font class="keywordflow">else</font> {
+00206 <font class="keywordflow">return</font> <font class="keyword">false</font>; <font class="comment">// we still didn't handle token</font>
+00207 }
+00208 }
+00209 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00210 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlhtml_8h-source.html">thmlhtml.h</a><li><a class="el" href="thmlhtml_8cpp-source.html">thmlhtml.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l__coll__graph.png b/doc/api-documentation/html/class_th_m_l_h_t_m_l__coll__graph.png
new file mode 100644
index 0000000..8107edf
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l__inherit__graph.png b/doc/api-documentation/html/class_th_m_l_h_t_m_l__inherit__graph.png
new file mode 100644
index 0000000..7945db5
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f-members.html b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f-members.html
new file mode 100644
index 0000000..3c420b7
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f-members.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLHTMLHREF Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>addEscapeStringSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>addTokenSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>DualStringMap</b> typedef (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b14">handleEscapeString</a>(char **buf, const char *escString, DualStringMap &amp;userData)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html#b0">handleToken</a>(char **buf, const char *token, DualStringMap &amp;userData)</td><td><a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>key</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>module</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b12">pushString</a>(char **buf, const char *format,...)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resultBuffer</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b1">setEscapeEnd</a>(const char *escEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b0">setEscapeStart</a>(const char *escStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setEscapeStringCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b5">setPassThruUnknownEscapeString</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b4">setPassThruUnknownToken</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setTokenCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b3">setTokenEnd</a>(const char *tokenEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b2">setTokenStart</a>(const char *tokenStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteEscapeString</b>(char **buf, const char *escString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteToken</b>(char **buf, const char *token) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLHTMLHREF</b>() (defined in <a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a>)</td><td><a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f.html b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f.html
new file mode 100644
index 0000000..0eafeea
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f.html
@@ -0,0 +1,247 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLHTMLHREF class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLHTMLHREF Class Reference</h1>this filter converts ThML text to HTML text with hrefs.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlhtmlhref_8h-source.html">thmlhtmlhref.h</a>&gt;</code>
+<p>
+Inheritance diagram for ThMLHTMLHREF:<p><center><img src="class_th_m_l_h_t_m_l_h_r_e_f__inherit__graph.png" border="0" usemap="#_th_m_l_h_t_m_l_h_r_e_f__inherit__map" alt="Inheritance graph"></center>
+<map name="_th_m_l_h_t_m_l_h_r_e_f__inherit__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="23,15,119,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for ThMLHTMLHREF:<p><center><img src="class_th_m_l_h_t_m_l_h_r_e_f__coll__graph.png" border="0" usemap="#_th_m_l_h_t_m_l_h_r_e_f__coll__map" alt="Collaboration graph"></center>
+<map name="_th_m_l_h_t_m_l_h_r_e_f__coll__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="206,481,302,500" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="150,196,206,215" alt="">
+<area href="class_s_w_module.html" shape="rect" coords="179,391,254,409" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,293,129,312" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="226,105,298,124" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="309,196,383,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="151,15,215,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_th_m_l_h_t_m_l_h_r_e_f-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLHTMLHREF::ThMLHTMLHREF"></a>
+&nbsp;</td><td valign=bottom><b>ThMLHTMLHREF</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html#b0">handleToken</a> (char **buf, const char *token, DualStringMap &amp;userData)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is called for every token encountered in the input text.</em> <a href="#b0">More...</a><em></em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to HTML text with hrefs.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlhtmlhref_8h-source.html#l00026">26</a> of file <a class="el" href="thmlhtmlhref_8h-source.html">thmlhtmlhref.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="b0" doxytag="ThMLHTMLHREF::handleToken"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool ThMLHTMLHREF::handleToken </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>token</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>DualStringMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>userData</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is called for every token encountered in the input text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the output buffer (FIXME: what is its size?) </td></tr>
+<tr><td valign=top><em>token</em>&nbsp;</td><td>
+the token (e.g. <code>"p align='left'"</code> </td></tr>
+<tr><td valign=top><em>userData</em>&nbsp;</td><td>
+FIXME: document this </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+<code>false</code> if was not handled and should be handled in the default way (by just substituting). </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_basic_filter.html#b13">SWBasicFilter</a>.
+<p>
+Definition at line <a class="el" href="thmlhtmlhref_8cpp-source.html#l00137">137</a> of file <a class="el" href="thmlhtmlhref_8cpp-source.html">thmlhtmlhref.cpp</a>.
+<p>
+References <a class="el" href="swmodule_8cpp-source.html#l00667">SWModule::getConfigEntry</a>(), and <a class="el" href="swbasicfilter_8cpp-source.html#l00110">SWBasicFilter::pushString</a>().
+<p>
+<div class="fragment"><pre>00137 {
+00138 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok;
+00139 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00140 <font class="comment">// manually process if it wasn't a simple substitution</font>
+00141 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync "</font>, 5)) {
+00142 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00143 <font class="keywordflow">for</font> (tok = token + 5; *(tok+1); tok++)
+00144 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00145 *(*buf)++ = *tok;
+00146 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00147 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00148
+00149 <font class="comment">//scan for value and add it to the buffer</font>
+00150 <font class="keywordflow">for</font> (tok = token + 5; *tok; tok++) {
+00151 <font class="keywordflow">if</font> (!strncmp(tok, <font class="stringliteral">"value=\""</font>, 7)) {
+00152 tok += 7;
+00153 <font class="keywordflow">for</font> (;*tok != <font class="charliteral">'\"'</font>; tok++)
+00154 *(*buf)++ = *tok;
+00155 <font class="keywordflow">break</font>;
+00156 }
+00157 }
+00158 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00159 }
+00160
+00161 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripture "</font>, 10)) {
+00162 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"true"</font>;
+00163 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;i&gt;"</font>);
+00164 }
+00165
+00166 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef p"</font>, 10) || !strncmp(token, <font class="stringliteral">"scripRef v"</font>, 10)) {
+00167 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"true"</font>;
+00168 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00169 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 9; *(tok+1); tok++)
+00170 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00171 *(*buf)++ = *tok;
+00172 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00173 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00174 }
+00175
+00176 <font class="comment">// we're starting a scripRef like "&lt;scripRef&gt;John 3:16&lt;/scripRef&gt;"</font>
+00177 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"scripRef"</font>)) {
+00178 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"false"</font>;
+00179 <font class="comment">// let's stop text from going to output</font>
+00180 userData[<font class="stringliteral">"suspendTextPassThru"</font>] = <font class="stringliteral">"true"</font>;
+00181 }
+00182
+00183 <font class="comment">// we've ended a scripRef </font>
+00184 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"/scripRef"</font>)) {
+00185 <font class="keywordflow">if</font> (userData[<font class="stringliteral">"inscriptRef"</font>] == <font class="stringliteral">"true"</font>) { <font class="comment">// like "&lt;scripRef passage="John 3:16"&gt;John 3:16&lt;/scripRef&gt;"</font>
+00186 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"false"</font>;
+00187 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00188 }
+00189
+00190 <font class="keywordflow">else</font> { <font class="comment">// like "&lt;scripRef&gt;John 3:16&lt;/scripRef&gt;"</font>
+00191 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\"passage="</font>);
+00192 <font class="comment">//char *strbuf = (char *)userData["lastTextNode"].c_str();</font>
+00193 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, userData[<font class="stringliteral">"lastTextNode"</font>].c_str());
+00194 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00195 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00196 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, userData[<font class="stringliteral">"lastTextNode"</font>].c_str());
+00197 <font class="comment">// let's let text resume to output again</font>
+00198 userData[<font class="stringliteral">"suspendTextPassThru"</font>] = <font class="stringliteral">"false"</font>;
+00199 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00200 }
+00201 }
+00202
+00203 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"sechead\""</font>, 19)) {
+00204 userData[<font class="stringliteral">"SecHead"</font>] = <font class="stringliteral">"true"</font>;
+00205 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;br /&gt;&lt;b&gt;&lt;i&gt;"</font>);
+00206 }
+00207 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"title\""</font>, 19)) {
+00208 userData[<font class="stringliteral">"SecHead"</font>] = <font class="stringliteral">"true"</font>;
+00209 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;br /&gt;&lt;b&gt;&lt;i&gt;"</font>);
+00210 }
+00211 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/div"</font>, 4)) {
+00212 <font class="keywordflow">if</font> (userData[<font class="stringliteral">"SecHead"</font>] == <font class="stringliteral">"true"</font>) {
+00213 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;"</font>);
+00214 userData[<font class="stringliteral">"SecHead"</font>] = <font class="stringliteral">"false"</font>;
+00215 }
+00216 }
+00217
+00218 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\"T"</font>, 28)) {
+00219 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00220 <font class="keywordflow">for</font> (tok = token + 5; *(tok+1); tok++)
+00221 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00222 *(*buf)++ = *tok;
+00223 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00224 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00225 <font class="keywordflow">for</font> (tok = token + 29; *(tok+2); tok++)
+00226 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00227 *(*buf)++ = *tok;
+00228 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00229 }
+00230 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"img "</font>, 4)) {
+00231 <font class="keyword">const</font> <font class="keywordtype">char</font> *src = strstr(token, <font class="stringliteral">"src"</font>);
+00232 <font class="keywordflow">if</font> (!src) <font class="comment">// assert we have a src attribute</font>
+00233 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00234
+00235 *(*buf)++ = <font class="charliteral">'&lt;'</font>;
+00236 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *c = token; *c; c++) {
+00237 <font class="keywordflow">if</font> (c == src) {
+00238 <font class="keywordflow">for</font> (;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++)
+00239 *(*buf)++ = *c;
+00240
+00241 <font class="keywordflow">if</font> (!*c) { c--; <font class="keywordflow">continue</font>; }
+00242
+00243 *(*buf)++ = <font class="charliteral">'"'</font>;
+00244 <font class="keywordflow">if</font> (*(c+1) == <font class="charliteral">'/'</font>) {
+00245 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"file:"</font>);
+00246 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, module-&gt;<a class="code" href="class_s_w_module.html#a6">getConfigEntry</a>(<font class="stringliteral">"AbsoluteDataPath"</font>));
+00247 <font class="keywordflow">if</font> (*((*buf)-1) == <font class="charliteral">'/'</font>)
+00248 c++; <font class="comment">// skip '/'</font>
+00249 }
+00250 <font class="keywordflow">continue</font>;
+00251 }
+00252 *(*buf)++ = *c;
+00253 }
+00254 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00255 }
+00256 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00257 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;font color=\"#800000\"&gt;("</font>);
+00258 }
+00259 <font class="keywordflow">else</font> {
+00260 *(*buf)++ = <font class="charliteral">'&lt;'</font>;
+00261 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00262 *(*buf)++ = *tok;
+00263 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00264 <font class="comment">//return false; // we still didn't handle token</font>
+00265 }
+00266 }
+00267 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00268 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlhtmlhref_8h-source.html">thmlhtmlhref.h</a><li><a class="el" href="thmlhtmlhref_8cpp-source.html">thmlhtmlhref.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__coll__graph.png b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__coll__graph.png
new file mode 100644
index 0000000..f779aea
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__inherit__graph.png b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__inherit__graph.png
new file mode 100644
index 0000000..8c0cb93
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_h_t_m_l_h_r_e_f__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_th_m_l_headings-members.html b/doc/api-documentation/html/class_th_m_l_headings-members.html
new file mode 100644
index 0000000..43212f6
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_headings-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLHeadings Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLHeadings</b>() (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLHeadings</b>() (defined in <a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>)</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_headings.html b/doc/api-documentation/html/class_th_m_l_headings.html
new file mode 100644
index 0000000..51cc6d9
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_headings.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLHeadings class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLHeadings Class Reference</h1>This Filter shows/hides headings in a ThML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlheadings_8h-source.html">thmlheadings.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_headings-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLHeadings::ThMLHeadings"></a>
+&nbsp;</td><td valign=bottom><b>ThMLHeadings</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLHeadings::~ThMLHeadings"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLHeadings</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLHeadings::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="ThMLHeadings::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ThMLHeadings::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="ThMLHeadings::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ThMLHeadings::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="ThMLHeadings::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="ThMLHeadings::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="ThMLHeadings::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ThMLHeadings::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="ThMLHeadings::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="ThMLHeadings::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Headings"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="ThMLHeadings::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Headings On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides headings in a ThML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlheadings_8h-source.html#l00030">30</a> of file <a class="el" href="thmlheadings_8h-source.html">thmlheadings.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlheadings_8h-source.html">thmlheadings.h</a><li><a class="el" href="thmlheadings_8cpp-source.html">thmlheadings.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_lemma-members.html b/doc/api-documentation/html/class_th_m_l_lemma-members.html
new file mode 100644
index 0000000..191096e
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_lemma-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLLemma Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLLemma</b>() (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLLemma</b>() (defined in <a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>)</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_lemma.html b/doc/api-documentation/html/class_th_m_l_lemma.html
new file mode 100644
index 0000000..d1d8cb9
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_lemma.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLLemma class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLLemma Class Reference</h1>This Filter shows/hides lemmas in a ThML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmllemma_8h-source.html">thmllemma.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_lemma-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLLemma::ThMLLemma"></a>
+&nbsp;</td><td valign=bottom><b>ThMLLemma</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLLemma::~ThMLLemma"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLLemma</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLLemma::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="ThMLLemma::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ThMLLemma::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="ThMLLemma::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ThMLLemma::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="ThMLLemma::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="ThMLLemma::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="ThMLLemma::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ThMLLemma::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="ThMLLemma::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="ThMLLemma::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Lemmas"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="ThMLLemma::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Lemmas On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides lemmas in a ThML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmllemma_8h-source.html#l00030">30</a> of file <a class="el" href="thmllemma_8h-source.html">thmllemma.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmllemma_8h-source.html">thmllemma.h</a><li><a class="el" href="thmllemma_8cpp-source.html">thmllemma.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_morph-members.html b/doc/api-documentation/html/class_th_m_l_morph-members.html
new file mode 100644
index 0000000..f2093df
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_morph-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLMorph Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLMorph</b>() (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLMorph</b>() (defined in <a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>)</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_morph.html b/doc/api-documentation/html/class_th_m_l_morph.html
new file mode 100644
index 0000000..2916801
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_morph.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLMorph class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLMorph Class Reference</h1>This Filter shows/hides morph tags in a ThML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlmorph_8h-source.html">thmlmorph.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_morph-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLMorph::ThMLMorph"></a>
+&nbsp;</td><td valign=bottom><b>ThMLMorph</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLMorph::~ThMLMorph"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLMorph</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLMorph::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="ThMLMorph::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ThMLMorph::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="ThMLMorph::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ThMLMorph::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="ThMLMorph::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="ThMLMorph::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="ThMLMorph::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ThMLMorph::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="ThMLMorph::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="ThMLMorph::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Morphological Tags"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="ThMLMorph::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Morphological Tags On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides morph tags in a ThML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlmorph_8h-source.html#l00029">29</a> of file <a class="el" href="thmlmorph_8h-source.html">thmlmorph.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlmorph_8h-source.html">thmlmorph.h</a><li><a class="el" href="thmlmorph_8cpp-source.html">thmlmorph.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_o_l_b-members.html b/doc/api-documentation/html/class_th_m_l_o_l_b-members.html
new file mode 100644
index 0000000..03237a2
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_o_l_b-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLOLB Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a>)</td><td><a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLOLB</b>() (defined in <a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a>)</td><td><a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_o_l_b.html b/doc/api-documentation/html/class_th_m_l_o_l_b.html
new file mode 100644
index 0000000..aaac04a
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_o_l_b.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLOLB class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLOLB Class Reference</h1>this filter converts ThML text to OLB text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlolb_8h-source.html">thmlolb.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_o_l_b-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLOLB::ThMLOLB"></a>
+&nbsp;</td><td valign=bottom><b>ThMLOLB</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLOLB::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen=-1)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to OLB text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlolb_8h-source.html#l00030">30</a> of file <a class="el" href="thmlolb_8h-source.html">thmlolb.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlolb_8h-source.html">thmlolb.h</a><li><a class="el" href="thmlolb_8cpp-source.html">thmlolb.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_o_s_i_s-members.html b/doc/api-documentation/html/class_th_m_l_o_s_i_s-members.html
new file mode 100644
index 0000000..200403c
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_o_s_i_s-members.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLOSIS Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>convertToOSIS</b>(const char *, const SWKey *key) (defined in <a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>)</td><td><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>)</td><td><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>pushString</b>(char **buf, const char *format,...) (defined in <a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>)</td><td><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLOSIS</b>() (defined in <a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>)</td><td><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLOSIS</b>() (defined in <a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>)</td><td><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_o_s_i_s.html b/doc/api-documentation/html/class_th_m_l_o_s_i_s.html
new file mode 100644
index 0000000..031aa04
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_o_s_i_s.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLOSIS class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLOSIS Class Reference</h1>this filter converts ThML text to HTML text with hrefs.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlosis_8h-source.html">thmlosis.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_o_s_i_s-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLOSIS::ThMLOSIS"></a>
+&nbsp;</td><td valign=bottom><b>ThMLOSIS</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLOSIS::~ThMLOSIS"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLOSIS</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLOSIS::ProcessText"></a>
+char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="b0" doxytag="ThMLOSIS::convertToOSIS"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>convertToOSIS</b> (const char *, const <a class="el" href="class_s_w_key.html">SWKey</a> *key)</td></tr>
+<tr><td nowrap align=right valign=top><a name="b1" doxytag="ThMLOSIS::pushString"></a>
+void&nbsp;</td><td valign=bottom><b>pushString</b> (char **buf, const char *format,...)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to HTML text with hrefs.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlosis_8h-source.html#l00025">25</a> of file <a class="el" href="thmlosis_8h-source.html">thmlosis.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlosis_8h-source.html">thmlosis.h</a><li><a class="el" href="thmlosis_8cpp-source.html">thmlosis.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_plain-members.html b/doc/api-documentation/html/class_th_m_l_plain-members.html
new file mode 100644
index 0000000..b813192
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_plain-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLPlain Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_plain.html">ThMLPlain</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <a class="el" href="class_th_m_l_plain.html">ThMLPlain</a>)</td><td><a class="el" href="class_th_m_l_plain.html">ThMLPlain</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLPlain</b>() (defined in <a class="el" href="class_th_m_l_plain.html">ThMLPlain</a>)</td><td><a class="el" href="class_th_m_l_plain.html">ThMLPlain</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_plain.html b/doc/api-documentation/html/class_th_m_l_plain.html
new file mode 100644
index 0000000..5243c4c
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_plain.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLPlain class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLPlain Class Reference</h1>this filter converts ThML text to plain text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlplain_8h-source.html">thmlplain.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_plain-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLPlain::ThMLPlain"></a>
+&nbsp;</td><td valign=bottom><b>ThMLPlain</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLPlain::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen=-1)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to plain text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlplain_8h-source.html#l00030">30</a> of file <a class="el" href="thmlplain_8h-source.html">thmlplain.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlplain_8h-source.html">thmlplain.h</a><li><a class="el" href="thmlplain_8cpp-source.html">thmlplain.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_r_t_f-members.html b/doc/api-documentation/html/class_th_m_l_r_t_f-members.html
new file mode 100644
index 0000000..974393e
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_r_t_f-members.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLRTF Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_r_t_f.html">ThMLRTF</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>addEscapeStringSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>addTokenSubstitute</b>(const char *findString, const char *replaceString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>DualStringMap</b> typedef (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>escSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b14">handleEscapeString</a>(char **buf, const char *escString, DualStringMap &amp;userData)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_th_m_l_r_t_f.html#b0">handleToken</a>(char **buf, const char *token, DualStringMap &amp;userData)</td><td><a class="el" href="class_th_m_l_r_t_f.html">ThMLRTF</a></td><td><code> [protected, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>key</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>module</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *, const SWModule *=0) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b12">pushString</a>(char **buf, const char *format,...)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>resultBuffer</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b1">setEscapeEnd</a>(const char *escEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b0">setEscapeStart</a>(const char *escStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setEscapeStringCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b5">setPassThruUnknownEscapeString</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b4">setPassThruUnknownToken</a>(bool val)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setTokenCaseSensitive</b>(bool val) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b3">setTokenEnd</a>(const char *tokenEnd)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_basic_filter.html#b2">setTokenStart</a>(const char *tokenStart)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteEscapeString</b>(char **buf, const char *escString) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>substituteToken</b>(char **buf, const char *token) (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLRTF</b>() (defined in <a class="el" href="class_th_m_l_r_t_f.html">ThMLRTF</a>)</td><td><a class="el" href="class_th_m_l_r_t_f.html">ThMLRTF</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>tokenSubMap</b> (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWBasicFilter</b>() (defined in <a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>)</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_r_t_f.html b/doc/api-documentation/html/class_th_m_l_r_t_f.html
new file mode 100644
index 0000000..fc88569
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_r_t_f.html
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLRTF class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLRTF Class Reference</h1>this filter converts ThML text to RTF text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlrtf_8h-source.html">thmlrtf.h</a>&gt;</code>
+<p>
+Inheritance diagram for ThMLRTF:<p><center><img src="class_th_m_l_r_t_f__inherit__graph.png" border="0" usemap="#_th_m_l_r_t_f__inherit__map" alt="Inheritance graph"></center>
+<map name="_th_m_l_r_t_f__inherit__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="14,15,110,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for ThMLRTF:<p><center><img src="class_th_m_l_r_t_f__coll__graph.png" border="0" usemap="#_th_m_l_r_t_f__coll__map" alt="Collaboration graph"></center>
+<map name="_th_m_l_r_t_f__coll__map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="206,481,302,500" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="150,196,206,215" alt="">
+<area href="class_s_w_module.html" shape="rect" coords="179,391,254,409" alt="">
+<area href="class_list_key.html" shape="rect" coords="75,293,129,312" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="226,105,298,124" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="309,196,383,215" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="151,15,215,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_th_m_l_r_t_f-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLRTF::ThMLRTF"></a>
+&nbsp;</td><td valign=bottom><b>ThMLRTF</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="class_th_m_l_r_t_f.html#b0">handleToken</a> (char **buf, const char *token, DualStringMap &amp;userData)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>This function is called for every token encountered in the input text.</em> <a href="#b0">More...</a><em></em></font><br><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+this filter converts ThML text to RTF text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlrtf_8h-source.html#l00030">30</a> of file <a class="el" href="thmlrtf_8h-source.html">thmlrtf.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="b0" doxytag="ThMLRTF::handleToken"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool ThMLRTF::handleToken </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char **&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>token</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>DualStringMap &amp;&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>userData</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [protected, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is called for every token encountered in the input text.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>buf</em>&nbsp;</td><td>
+the output buffer (FIXME: what is its size?) </td></tr>
+<tr><td valign=top><em>token</em>&nbsp;</td><td>
+the token (e.g. <code>"p align='left'"</code> </td></tr>
+<tr><td valign=top><em>userData</em>&nbsp;</td><td>
+FIXME: document this </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+<code>false</code> if was not handled and should be handled in the default way (by just substituting). </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_basic_filter.html#b13">SWBasicFilter</a>.
+<p>
+Definition at line <a class="el" href="thmlrtf_8cpp-source.html#l00150">150</a> of file <a class="el" href="thmlrtf_8cpp-source.html">thmlrtf.cpp</a>.
+<p>
+References <a class="el" href="swbasicfilter_8cpp-source.html#l00110">SWBasicFilter::pushString</a>().
+<p>
+<div class="fragment"><pre>00150 {
+00151 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00152 <font class="comment">// manually process if it wasn't a simple substitution</font>
+00153 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\""</font>, 27)) {
+00154 <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'H'</font> || token[27] == <font class="charliteral">'G'</font> || token[27] == <font class="charliteral">'A'</font>) {
+00155 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\fs15 &lt;"</font>);
+00156 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 28; token[i] != <font class="charliteral">'\"'</font>; i++)
+00157 *(*buf)++ = token[i];
+00158 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&gt;}"</font>);
+00159 }
+00160 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'T'</font>) {
+00161 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\fs15 ("</font>);
+00162 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 28; token[i] != <font class="charliteral">'\"'</font>; i++)
+00163 *(*buf)++ = token[i];
+00164 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")}"</font>);
+00165 }
+00166 }
+00167 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\" "</font>, 18)) {
+00168 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\fs15 ("</font>);
+00169 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 5; *tok; tok++) {
+00170 <font class="keywordflow">if</font> (!strncmp(tok, <font class="stringliteral">"value=\""</font>, 7)) {
+00171 tok += 7;
+00172 <font class="keywordflow">for</font> (;*tok != <font class="charliteral">'\"'</font>; tok++)
+00173 *(*buf)++ = *tok;
+00174 <font class="keywordflow">break</font>;
+00175 }
+00176 }
+00177
+00178 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")}"</font>);
+00179 }
+00180 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"lemma\" value=\""</font>, 25)) {
+00181 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"{\\fs15 ("</font>);
+00182 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00183 *(*buf)++ = token[i];
+00184 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")}"</font>);
+00185 }
+00186 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00187 <font class="comment">// pushString(buf, "{\\cf2 #");</font>
+00188 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\"\"&gt;"</font>);
+00189 }
+00190 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/scripRef"</font>, 9)) {
+00191 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00192 }
+00193 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div"</font>, 3)) {
+00194 *(*buf)++ = <font class="charliteral">'{'</font>;
+00195 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"title\""</font>, 17)) {
+00196 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"\\par\\i1\\b1 "</font>);
+00197 userData[<font class="stringliteral">"sechead"</font>] = <font class="stringliteral">"true"</font>;
+00198 }
+00199 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"sechead\""</font>, 19)) {
+00200 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"\\par\\i1\\b1 "</font>);
+00201 userData[<font class="stringliteral">"sechead"</font>] = <font class="stringliteral">"true"</font>;
+00202 }
+00203 }
+00204 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/div"</font>, 4)) {
+00205 *(*buf)++ = <font class="charliteral">'}'</font>;
+00206 <font class="keywordflow">if</font> (userData[<font class="stringliteral">"sechead"</font>] == <font class="stringliteral">"true"</font>) {
+00207 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"\\par "</font>);
+00208 userData[<font class="stringliteral">"sechead"</font>] == <font class="stringliteral">"false"</font>;
+00209 }
+00210 }
+00211 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00212 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\i1\\fs15 ("</font>);
+00213 }
+00214
+00215 <font class="keywordflow">else</font> {
+00216 <font class="keywordflow">return</font> <font class="keyword">false</font>; <font class="comment">// we still didn't handle token</font>
+00217 }
+00218 }
+00219 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00220 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlrtf_8h-source.html">thmlrtf.h</a><li><a class="el" href="thmlrtf_8cpp-source.html">thmlrtf.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_r_t_f__coll__graph.png b/doc/api-documentation/html/class_th_m_l_r_t_f__coll__graph.png
new file mode 100644
index 0000000..b048dda
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_r_t_f__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_th_m_l_r_t_f__inherit__graph.png b/doc/api-documentation/html/class_th_m_l_r_t_f__inherit__graph.png
new file mode 100644
index 0000000..660c493
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_r_t_f__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_th_m_l_scripref-members.html b/doc/api-documentation/html/class_th_m_l_scripref-members.html
new file mode 100644
index 0000000..e1f83d8
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_scripref-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLScripref Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLScripref</b>() (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLScripref</b>() (defined in <a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>)</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_scripref.html b/doc/api-documentation/html/class_th_m_l_scripref.html
new file mode 100644
index 0000000..3f9d3f1
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_scripref.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLScripref class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLScripref Class Reference</h1>This Filter shows/hides scripture references in a ThML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlscripref_8h-source.html">thmlscripref.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_scripref-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLScripref::ThMLScripref"></a>
+&nbsp;</td><td valign=bottom><b>ThMLScripref</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLScripref::~ThMLScripref"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLScripref</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLScripref::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="ThMLScripref::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ThMLScripref::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="ThMLScripref::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ThMLScripref::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="ThMLScripref::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="ThMLScripref::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="ThMLScripref::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ThMLScripref::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="ThMLScripref::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="ThMLScripref::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Scripture Cross-references"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="ThMLScripref::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Scripture Cross-references On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides scripture references in a ThML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlscripref_8h-source.html#l00030">30</a> of file <a class="el" href="thmlscripref_8h-source.html">thmlscripref.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlscripref_8h-source.html">thmlscripref.h</a><li><a class="el" href="thmlscripref_8cpp-source.html">thmlscripref.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_strongs-members.html b/doc/api-documentation/html/class_th_m_l_strongs-members.html
new file mode 100644
index 0000000..2684ecb
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_strongs-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLStrongs Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLStrongs</b>() (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLStrongs</b>() (defined in <a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>)</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_strongs.html b/doc/api-documentation/html/class_th_m_l_strongs.html
new file mode 100644
index 0000000..d31b790
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_strongs.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLStrongs class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLStrongs Class Reference</h1>This Filter shows/hides strong's numbers in a ThML text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlstrongs_8h-source.html">thmlstrongs.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_strongs-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLStrongs::ThMLStrongs"></a>
+&nbsp;</td><td valign=bottom><b>ThMLStrongs</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLStrongs::~ThMLStrongs"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLStrongs</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLStrongs::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="ThMLStrongs::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ThMLStrongs::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="ThMLStrongs::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ThMLStrongs::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="ThMLStrongs::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="ThMLStrongs::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="ThMLStrongs::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ThMLStrongs::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="ThMLStrongs::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="ThMLStrongs::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Strong's Numbers"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="ThMLStrongs::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Strong's Numbers On and Off if they exist"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides strong's numbers in a ThML text.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlstrongs_8h-source.html#l00030">30</a> of file <a class="el" href="thmlstrongs_8h-source.html">thmlstrongs.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlstrongs_8h-source.html">thmlstrongs.h</a><li><a class="el" href="thmlstrongs_8cpp-source.html">thmlstrongs.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_variants-members.html b/doc/api-documentation/html/class_th_m_l_variants-members.html
new file mode 100644
index 0000000..23b0230
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_variants-members.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLVariants Member List</h1>This is the complete list of members for <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>all</b> (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>primary</b> (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>secondary</b> (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ThMLVariants</b>() (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~ThMLVariants</b>() (defined in <a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>)</td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_th_m_l_variants.html b/doc/api-documentation/html/class_th_m_l_variants.html
new file mode 100644
index 0000000..46b01ef
--- /dev/null
+++ b/doc/api-documentation/html/class_th_m_l_variants.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ThMLVariants class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ThMLVariants Class Reference</h1>This Filter shows/hides textual variants.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="thmlvariants_8h-source.html">thmlvariants.h</a>&gt;</code>
+<p>
+<a href="class_th_m_l_variants-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="ThMLVariants::ThMLVariants"></a>
+&nbsp;</td><td valign=bottom><b>ThMLVariants</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="ThMLVariants::~ThMLVariants"></a>
+virtual&nbsp;</td><td valign=bottom><b>~ThMLVariants</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="ThMLVariants::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="ThMLVariants::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="ThMLVariants::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="ThMLVariants::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="ThMLVariants::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="ThMLVariants::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="ThMLVariants::option"></a>
+char&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="ThMLVariants::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="ThMLVariants::primary"></a>
+const char&nbsp;</td><td valign=bottom><b>primary</b> [] = "Primary Reading"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="ThMLVariants::secondary"></a>
+const char&nbsp;</td><td valign=bottom><b>secondary</b> [] = "Secondary Reading"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="ThMLVariants::all"></a>
+const char&nbsp;</td><td valign=bottom><b>all</b> [] = "All Readings"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="ThMLVariants::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Textual Variants"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r4" doxytag="ThMLVariants::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Switch between Textual Variants modes"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides textual variants.
+<p>
+
+<p>
+Definition at line <a class="el" href="thmlvariants_8h-source.html#l00029">29</a> of file <a class="el" href="thmlvariants_8h-source.html">thmlvariants.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="thmlvariants_8h-source.html">thmlvariants.h</a><li><a class="el" href="thmlvariants_8cpp-source.html">thmlvariants.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_tree_key-members.html b/doc/api-documentation/html/class_tree_key-members.html
new file mode 100644
index 0000000..5a3eb3e
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key-members.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>TreeKey Member List</h1>This is the complete list of members for <a class="el" href="class_tree_key.html">TreeKey</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>append</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>appendChild</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>classdef</b> (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a3">clone</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key.html#a22">compare</a>(const SWKey &amp;ikey)=0</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a8">copyFrom</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key.html#a23">decrement</a>(int steps=1)=0</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a12">equals</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a6">Error</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>firstChild</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getFullName</b>() const=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getLocalName</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOffset</b>() const=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getShortText</b>() const (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key.html#a21">getText</a>() const=0</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getUserData</b>(int *size=0)=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>hasChildren</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key.html#a24">increment</a>(int steps=1)=0</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key.html#a26">Index</a>() const</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Index</b>(long iindex) (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>init</b>() (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>insertBefore</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>keytext</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>nextSibling</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>parent</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>persist</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a4">Persist</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a5">Persist</a>(signed char ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>previousSibling</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>remove</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>root</b>()=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setLocalName</b>(const char *)=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOffset</b>(unsigned long offset)=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setPosition</b>(SW_POSITION p)=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key.html#a19">setText</a>(const char *ikey)=0</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setUserData</b>(const char *userData, int size=0)=0 (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a0">SWKey</a>(const char *ikey=0)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a1">SWKey</a>(SWKey const &amp;k)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Traversable</b>() (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>TreeKey</b>() (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>userData</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a2">~SWKey</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~TreeKey</b>() (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_tree_key.html b/doc/api-documentation/html/class_tree_key.html
new file mode 100644
index 0000000..5bf1416
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key.html
@@ -0,0 +1,326 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>TreeKey class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>TreeKey Class Reference</h1>Class <a class="el" href="class_verse_key.html">VerseKey</a> The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="treekey_8h-source.html">treekey.h</a>&gt;</code>
+<p>
+Inheritance diagram for TreeKey:<p><center><img src="class_tree_key__inherit__graph.png" border="0" usemap="#_tree_key__inherit__map" alt="Inheritance graph"></center>
+<map name="_tree_key__inherit__map">
+<area href="class_tree_key_idx.html" shape="rect" coords="14,223,91,242" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="25,85,81,103" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="17,15,89,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for TreeKey:<p><center><img src="class_tree_key__coll__graph.png" border="0" usemap="#_tree_key__coll__map" alt="Collaboration graph"></center>
+<map name="_tree_key__coll__map">
+<area href="class_s_w_key.html" shape="rect" coords="107,196,163,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="219,106,291,124" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="103,15,167,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_tree_key-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="TreeKey::TreeKey"></a>
+&nbsp;</td><td valign=bottom><b>TreeKey</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="TreeKey::~TreeKey"></a>
+&nbsp;</td><td valign=bottom><b>~TreeKey</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="TreeKey::getLocalName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getLocalName</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="TreeKey::setLocalName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>setLocalName</b> (const char *)=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="TreeKey::getUserData"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getUserData</b> (int *size=0)=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="TreeKey::setUserData"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setUserData</b> (const char *userData, int size=0)=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="TreeKey::getFullName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getFullName</b> () const=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="TreeKey::root"></a>
+virtual void&nbsp;</td><td valign=bottom><b>root</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a8" doxytag="TreeKey::parent"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>parent</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a9" doxytag="TreeKey::firstChild"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>firstChild</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a10" doxytag="TreeKey::nextSibling"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>nextSibling</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a11" doxytag="TreeKey::previousSibling"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>previousSibling</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a12" doxytag="TreeKey::hasChildren"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>hasChildren</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a13" doxytag="TreeKey::append"></a>
+virtual void&nbsp;</td><td valign=bottom><b>append</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a14" doxytag="TreeKey::appendChild"></a>
+virtual void&nbsp;</td><td valign=bottom><b>appendChild</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a15" doxytag="TreeKey::insertBefore"></a>
+virtual void&nbsp;</td><td valign=bottom><b>insertBefore</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a16" doxytag="TreeKey::remove"></a>
+virtual void&nbsp;</td><td valign=bottom><b>remove</b> ()=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a17" doxytag="TreeKey::setOffset"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOffset</b> (unsigned long offset)=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a18" doxytag="TreeKey::getOffset"></a>
+virtual unsigned long&nbsp;</td><td valign=bottom><b>getOffset</b> () const=0</td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key.html#a19">setText</a> (const char *ikey)=0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.</em> <a href="#a19">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a20" doxytag="TreeKey::setPosition"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setPosition</b> (SW_POSITION p)=0</td></tr>
+<tr><td nowrap align=right valign=top><a name="a21" doxytag="TreeKey::getText"></a>
+virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key.html#a21">getText</a> () const=0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns text key if (char *) cast is requested.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key.html#a22">compare</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)=0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.</em> <a href="#a22">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key.html#a23">decrement</a> (int steps=1)=0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Decrements key a number of entries.</em> <a href="#a23">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key.html#a24">increment</a> (int steps=1)=0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Increments key a number of entries.</em> <a href="#a24">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a25" doxytag="TreeKey::Traversable"></a>
+virtual char&nbsp;</td><td valign=bottom><b>Traversable</b> ()</td></tr>
+<tr><td nowrap align=right valign=top>virtual long&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key.html#a26">Index</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Use this function to get te current position withing a module.</em> <a href="#a26">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a27" doxytag="TreeKey::Index"></a>
+virtual long&nbsp;</td><td valign=bottom><b>Index</b> (long iindex)</td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="TreeKey::init"></a>
+void&nbsp;</td><td valign=bottom><b>init</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="TreeKey::classdef"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;</td><td valign=bottom><b>classdef</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Class <a class="el" href="class_verse_key.html">VerseKey</a> The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
+<p>
+
+<p>
+Definition at line <a class="el" href="treekey_8h-source.html#l00036">36</a> of file <a class="el" href="treekey_8h-source.html">treekey.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="a22" doxytag="TreeKey::compare"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual int TreeKey::compare </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+key to compare with this one </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+&gt;0 if this key is greater than compare key; &lt;0 if this key is smaller than compare key; 0 if the keys are the same </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a11">SWKey</a>.
+<p>
+Implemented in <a class="el" href="class_tree_key_idx.html#a28">TreeKeyIdx</a>. </td>
+ </tr>
+</table>
+<a name="a23" doxytag="TreeKey::decrement"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void TreeKey::decrement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>steps</em> = 1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Decrements key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>steps</em>&nbsp;</td><td>
+Number of entries to jump backward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a14">SWKey</a>.
+<p>
+Implemented in <a class="el" href="class_tree_key_idx.html#a29">TreeKeyIdx</a>. </td>
+ </tr>
+</table>
+<a name="a24" doxytag="TreeKey::increment"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void TreeKey::increment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>steps</em> = 1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Increments key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>increment</em>&nbsp;</td><td>
+Number of entries to jump forward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a15">SWKey</a>.
+<p>
+Implemented in <a class="el" href="class_tree_key_idx.html#a30">TreeKeyIdx</a>. </td>
+ </tr>
+</table>
+<a name="a26" doxytag="TreeKey::Index"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual long TreeKey::Index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Use this function to get te current position withing a module.
+<p>
+Here's a small example how to use this function and Index(long). This function uses the GerLut module and chooses a random verse from the Bible and returns it. <div class="fragment"><pre> <font class="keyword">const</font> <font class="keywordtype">char</font>* randomVerse() {
+ <a class="code" href="class_verse_key.html">VerseKey</a> vk;
+ <a class="code" href="class_s_w_mgr.html">SWMgr</a> mgr;
+ <a class="code" href="class_locale_mgr.html#p0">LocaleMgr::systemLocaleMgr</a>.<a class="code" href="class_locale_mgr.html#a6">setDefaultLocaleName</a>(<font class="stringliteral">"de"</font>);
+
+ <a class="code" href="class_s_w_module.html">SWModule</a>* module = mgr-&gt;<a class="code" href="class_s_w_mgr.html#m2">Modules</a>(<font class="stringliteral">"GerLut"</font>);
+ srand( time(0) );
+ <font class="keyword">const</font> <font class="keywordtype">double</font> newIndex = (double(rand())/RAND_MAX)*(24108+8224);
+ vk.<a class="code" href="class_verse_key.html#a34">Index</a>(newIndex);
+ module-&gt;<a class="code" href="class_s_w_module.html#a8">SetKey</a>(vk);
+
+ <font class="keywordtype">char</font>* text;
+ sprintf(text, <font class="stringliteral">"%s: %s"</font>,(<font class="keyword">const</font> <font class="keywordtype">char</font>*)vk ,module-&gt;<a class="code" href="class_s_w_module.html#a56">StripText</a>(&amp;vk));
+ <font class="keywordflow">return</font> text;
+</pre></div>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a17">SWKey</a>.
+<p>
+Definition at line <a class="el" href="treekey_8h-source.html#l00081">81</a> of file <a class="el" href="treekey_8h-source.html">treekey.h</a>.
+<p>
+<div class="fragment"><pre>00081 { <font class="keywordflow">return</font> getOffset(); }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a19" doxytag="TreeKey::setText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void TreeKey::setText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+string to set this key to </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a7">SWKey</a>.
+<p>
+Implemented in <a class="el" href="class_tree_key_idx.html#a24">TreeKeyIdx</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="treekey_8h-source.html">treekey.h</a><li><a class="el" href="treekey_8cpp-source.html">treekey.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:04 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_tree_key__coll__graph.png b/doc/api-documentation/html/class_tree_key__coll__graph.png
new file mode 100644
index 0000000..68ef49c
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_tree_key__inherit__graph.png b/doc/api-documentation/html/class_tree_key__inherit__graph.png
new file mode 100644
index 0000000..f67d373
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_tree_key_idx-members.html b/doc/api-documentation/html/class_tree_key_idx-members.html
new file mode 100644
index 0000000..725a0bb
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key_idx-members.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>TreeKeyIdx Member List</h1>This is the complete list of members for <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>_compare</b>(const TreeKeyIdx &amp;ikey) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>append</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>appendChild</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>classdef</b> (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a3">clone</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key_idx.html#a28">compare</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>copyFrom</b>(const TreeKeyIdx &amp;ikey) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key_idx.html#a20">copyFrom</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>create</b>(const char *path) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>currentNode</b> (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>datfd</b> (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key_idx.html#a29">decrement</a>(int steps=1)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a12">equals</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a6">Error</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>firstChild</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getFullName</b>() const (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getLocalName</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOffset</b>() const (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getShortText</b>() const (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key_idx.html#a26">getText</a>() const</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getTreeNodeFromDatOffset</b>(long ioffset, TreeNode *buf) const (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getTreeNodeFromIdxOffset</b>(long ioffset, TreeNode *node) const (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getUserData</b>(int *size=0) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>hasChildren</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>idxfd</b> (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key_idx.html#a30">increment</a>(int steps=1)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key.html#a26">Index</a>() const</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Index</b>(long iindex) (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>init</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>insertBefore</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>keytext</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>nextSibling</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>operator=</b>(const TreeKeyIdx &amp;ikey) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>parent</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>path</b> (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a4">Persist</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a5">Persist</a>(signed char ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>persist</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>previousSibling</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>remove</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>root</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>save</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>saveTreeNode</b>(TreeNode *node) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>saveTreeNodeOffsets</b>(TreeNode *node) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setLocalName</b>(const char *) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOffset</b>(unsigned long offset) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setPosition</b>(SW_POSITION p) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_tree_key_idx.html#a24">setText</a>(const char *ikey)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setUserData</b>(const char *userData, int size=0) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a0">SWKey</a>(const char *ikey=0)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a1">SWKey</a>(SWKey const &amp;k)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Traversable</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>TreeKey</b>() (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>TreeKeyIdx</b>(const TreeKeyIdx &amp;ikey) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>TreeKeyIdx</b>(const char *idxPath, int fileMode=-1) (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>userData</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a2">~SWKey</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~TreeKey</b>() (defined in <a class="el" href="class_tree_key.html">TreeKey</a>)</td><td><a class="el" href="class_tree_key.html">TreeKey</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~TreeKeyIdx</b>() (defined in <a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>)</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a></td><td></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_tree_key_idx.html b/doc/api-documentation/html/class_tree_key_idx.html
new file mode 100644
index 0000000..23dbf7b
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key_idx.html
@@ -0,0 +1,419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>TreeKeyIdx class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>TreeKeyIdx Class Reference</h1>Class <a class="el" href="class_verse_key.html">VerseKey</a> The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="treekeyidx_8h-source.html">treekeyidx.h</a>&gt;</code>
+<p>
+Inheritance diagram for TreeKeyIdx:<p><center><img src="class_tree_key_idx__inherit__graph.png" border="0" usemap="#_tree_key_idx__inherit__map" alt="Inheritance graph"></center>
+<map name="_tree_key_idx__inherit__map">
+<area href="class_tree_key.html" shape="rect" coords="22,154,83,173" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="25,85,81,103" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="17,15,89,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for TreeKeyIdx:<p><center><img src="class_tree_key_idx__coll__graph.png" border="0" usemap="#_tree_key_idx__coll__map" alt="Collaboration graph"></center>
+<map name="_tree_key_idx__coll__map">
+<area href="class_tree_key.html" shape="rect" coords="105,268,166,287" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="205,196,261,215" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="317,106,389,124" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="151,15,215,34" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_tree_key_idx-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="TreeKeyIdx::TreeKeyIdx"></a>
+&nbsp;</td><td valign=bottom><b>TreeKeyIdx</b> (const TreeKeyIdx &amp;ikey)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="TreeKeyIdx::TreeKeyIdx"></a>
+&nbsp;</td><td valign=bottom><b>TreeKeyIdx</b> (const char *idxPath, int fileMode=-1)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="TreeKeyIdx::~TreeKeyIdx"></a>
+&nbsp;</td><td valign=bottom><b>~TreeKeyIdx</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="TreeKeyIdx::getLocalName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getLocalName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="TreeKeyIdx::setLocalName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>setLocalName</b> (const char *)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="TreeKeyIdx::getUserData"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getUserData</b> (int *size=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="TreeKeyIdx::setUserData"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setUserData</b> (const char *userData, int size=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="TreeKeyIdx::getFullName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getFullName</b> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a8" doxytag="TreeKeyIdx::root"></a>
+virtual void&nbsp;</td><td valign=bottom><b>root</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a9" doxytag="TreeKeyIdx::parent"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>parent</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a10" doxytag="TreeKeyIdx::firstChild"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>firstChild</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a11" doxytag="TreeKeyIdx::nextSibling"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>nextSibling</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a12" doxytag="TreeKeyIdx::previousSibling"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>previousSibling</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a13" doxytag="TreeKeyIdx::hasChildren"></a>
+virtual bool&nbsp;</td><td valign=bottom><b>hasChildren</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a14" doxytag="TreeKeyIdx::append"></a>
+virtual void&nbsp;</td><td valign=bottom><b>append</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a15" doxytag="TreeKeyIdx::appendChild"></a>
+virtual void&nbsp;</td><td valign=bottom><b>appendChild</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a16" doxytag="TreeKeyIdx::insertBefore"></a>
+virtual void&nbsp;</td><td valign=bottom><b>insertBefore</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a17" doxytag="TreeKeyIdx::remove"></a>
+virtual void&nbsp;</td><td valign=bottom><b>remove</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a18" doxytag="TreeKeyIdx::save"></a>
+virtual void&nbsp;</td><td valign=bottom><b>save</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a19" doxytag="TreeKeyIdx::copyFrom"></a>
+virtual void&nbsp;</td><td valign=bottom><b>copyFrom</b> (const TreeKeyIdx &amp;ikey)</td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key_idx.html#a20">copyFrom</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.</em> <a href="#a20">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a21" doxytag="TreeKeyIdx::operator="></a>
+virtual <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td><td valign=bottom><b>operator=</b> (const TreeKeyIdx &amp;ikey)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a22" doxytag="TreeKeyIdx::setOffset"></a>
+void&nbsp;</td><td valign=bottom><b>setOffset</b> (unsigned long offset)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a23" doxytag="TreeKeyIdx::getOffset"></a>
+unsigned long&nbsp;</td><td valign=bottom><b>getOffset</b> () const</td></tr>
+<tr><td nowrap align=right valign=top>virtual SWKEY_OPERATORS void&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key_idx.html#a24">setText</a> (const char *ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.</em> <a href="#a24">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a25" doxytag="TreeKeyIdx::setPosition"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setPosition</b> (SW_POSITION p)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a26" doxytag="TreeKeyIdx::getText"></a>
+virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key_idx.html#a26">getText</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>returns text key if (char *) cast is requested.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a27" doxytag="TreeKeyIdx::_compare"></a>
+virtual int&nbsp;</td><td valign=bottom><b>_compare</b> (const TreeKeyIdx &amp;ikey)</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key_idx.html#a28">compare</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.</em> <a href="#a28">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key_idx.html#a29">decrement</a> (int steps=1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Decrements key a number of entries.</em> <a href="#a29">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_tree_key_idx.html#a30">increment</a> (int steps=1)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Increments key a number of entries.</em> <a href="#a30">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a31" doxytag="TreeKeyIdx::Traversable"></a>
+virtual char&nbsp;</td><td valign=bottom><b>Traversable</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Static Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="d0" doxytag="TreeKeyIdx::create"></a>
+signed char&nbsp;</td><td valign=bottom><b>create</b> (const char *path)</td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="TreeKeyIdx::getTreeNodeFromDatOffset"></a>
+void&nbsp;</td><td valign=bottom><b>getTreeNodeFromDatOffset</b> (long ioffset, TreeNode *buf) const</td></tr>
+<tr><td nowrap align=right valign=top><a name="c1" doxytag="TreeKeyIdx::getTreeNodeFromIdxOffset"></a>
+char&nbsp;</td><td valign=bottom><b>getTreeNodeFromIdxOffset</b> (long ioffset, TreeNode *node) const</td></tr>
+<tr><td nowrap align=right valign=top><a name="c2" doxytag="TreeKeyIdx::saveTreeNode"></a>
+void&nbsp;</td><td valign=bottom><b>saveTreeNode</b> (TreeNode *node)</td></tr>
+<tr><td nowrap align=right valign=top><a name="c3" doxytag="TreeKeyIdx::saveTreeNodeOffsets"></a>
+void&nbsp;</td><td valign=bottom><b>saveTreeNodeOffsets</b> (TreeNode *node)</td></tr>
+<tr><td nowrap align=right valign=top><a name="c4" doxytag="TreeKeyIdx::init"></a>
+void&nbsp;</td><td valign=bottom><b>init</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="TreeKeyIdx::currentNode"></a>
+TreeKeyIdx::TreeNode&nbsp;</td><td valign=bottom><b>currentNode</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="TreeKeyIdx::path"></a>
+char *&nbsp;</td><td valign=bottom><b>path</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o2" doxytag="TreeKeyIdx::idxfd"></a>
+FileDesc *&nbsp;</td><td valign=bottom><b>idxfd</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o3" doxytag="TreeKeyIdx::datfd"></a>
+FileDesc *&nbsp;</td><td valign=bottom><b>datfd</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="TreeKeyIdx::classdef"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;</td><td valign=bottom><b>classdef</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Class <a class="el" href="class_verse_key.html">VerseKey</a> The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
+<p>
+
+<p>
+Definition at line <a class="el" href="treekeyidx_8h-source.html#l00035">35</a> of file <a class="el" href="treekeyidx_8h-source.html">treekeyidx.h</a>.<hr><h2>Member Function Documentation</h2>
+<a name="a28" doxytag="TreeKeyIdx::compare"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int TreeKeyIdx::compare </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compares another <a class="el" href="class_verse_key.html">VerseKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+key to compare with this one </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+&gt;0 if this key is greater than compare key; &lt;0 if this key is smaller than compare key; 0 if the keys are the same </dl>
+<p>
+Implements <a class="el" href="class_tree_key.html#a22">TreeKey</a>.
+<p>
+Definition at line <a class="el" href="treekeyidx_8cpp-source.html#l00520">520</a> of file <a class="el" href="treekeyidx_8cpp-source.html">treekeyidx.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00151">SWKey::compare</a>().
+<p>
+<div class="fragment"><pre>00520 {
+00521 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *treeKey = SWDYNAMIC_CAST(<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a>, (&amp;ikey));
+00522 <font class="keywordflow">if</font> (treeKey)
+00523 <font class="keywordflow">return</font> _compare(*treeKey);
+00524 <font class="keywordflow">return</font> <a class="code" href="class_s_w_key.html#a11">SWKey::compare</a>(ikey);
+00525 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a20" doxytag="TreeKeyIdx::copyFrom"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void TreeKeyIdx::copyFrom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+other swkey object </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a8">SWKey</a>.
+<p>
+Definition at line <a class="el" href="treekeyidx_8cpp-source.html#l00494">494</a> of file <a class="el" href="treekeyidx_8cpp-source.html">treekeyidx.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00126">SWKey::copyFrom</a>().
+<p>
+<div class="fragment"><pre>00494 {
+00495 <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey);
+00496 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a29" doxytag="TreeKeyIdx::decrement"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void TreeKeyIdx::decrement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>steps</em> = 1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Decrements key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>steps</em>&nbsp;</td><td>
+Number of entries to jump backward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Implements <a class="el" href="class_tree_key.html#a23">TreeKey</a>.
+<p>
+Definition at line <a class="el" href="treekeyidx_8cpp-source.html#l00528">528</a> of file <a class="el" href="treekeyidx_8cpp-source.html">treekeyidx.cpp</a>.
+<p>
+<div class="fragment"><pre>00528 {
+00529 error = getTreeNodeFromIdxOffset(currentNode.offset - (4*steps), &amp;currentNode);
+00530 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a30" doxytag="TreeKeyIdx::increment"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void TreeKeyIdx::increment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>steps</em> = 1 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Increments key a number of entries.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>increment</em>&nbsp;</td><td>
+Number of entries to jump forward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Implements <a class="el" href="class_tree_key.html#a24">TreeKey</a>.
+<p>
+Definition at line <a class="el" href="treekeyidx_8cpp-source.html#l00532">532</a> of file <a class="el" href="treekeyidx_8cpp-source.html">treekeyidx.cpp</a>.
+<p>
+<div class="fragment"><pre>00532 {
+00533 error = getTreeNodeFromIdxOffset(currentNode.offset + (4*steps), &amp;currentNode);
+00534
+00535 <font class="comment">/*</font>
+00536 <font class="comment"> // assert positive</font>
+00537 <font class="comment"> if (steps &lt; 0) {</font>
+00538 <font class="comment"> decrement(steps * -1);</font>
+00539 <font class="comment"> return;</font>
+00540 <font class="comment"> }</font>
+00541 <font class="comment"></font>
+00542 <font class="comment"> while (steps &gt; 0) {</font>
+00543 <font class="comment"> if (!firstChild()) {</font>
+00544 <font class="comment"> if (!nextSibbling() {</font>
+00545 <font class="comment"> error = KEYERR_OUTOFBOUNDS;</font>
+00546 <font class="comment"> return;</font>
+00547 <font class="comment"> }</font>
+00548 <font class="comment"> }</font>
+00549 <font class="comment"> steps--;</font>
+00550 <font class="comment"> }</font>
+00551 <font class="comment">*/</font>
+00552 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a24" doxytag="TreeKeyIdx::setText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void TreeKeyIdx::setText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+string to set this key to </td></tr>
+</table>
+</dl>
+<p>
+Implements <a class="el" href="class_tree_key.html#a19">TreeKey</a>.
+<p>
+Definition at line <a class="el" href="treekeyidx_8cpp-source.html#l00466">466</a> of file <a class="el" href="treekeyidx_8cpp-source.html">treekeyidx.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>().
+<p>
+<div class="fragment"><pre>00466 {
+00467 <font class="keywordtype">char</font> *buf = 0;
+00468 stdstr(&amp;buf, ikey);
+00469 <font class="keywordtype">char</font> *leaf = strtok(buf, <font class="stringliteral">"/"</font>);
+00470 root();
+00471 <font class="keywordflow">while</font> ((leaf) &amp;&amp; (!<a class="code" href="class_s_w_key.html#a6">Error</a>())) {
+00472 <font class="keywordtype">bool</font> ok, inChild = <font class="keyword">false</font>;
+00473 <font class="keywordflow">for</font> (ok = firstChild(); ok; ok = nextSibling()) {
+00474 inChild = <font class="keyword">true</font>;
+00475 <font class="keywordflow">if</font> (!stricmp(leaf, getLocalName()))
+00476 <font class="keywordflow">break</font>;
+00477 }
+00478 leaf = strtok(0, <font class="stringliteral">"/"</font>);
+00479 <font class="keywordflow">if</font> (!ok) {
+00480 <font class="keywordflow">if</font> (inChild) { <font class="comment">// if we didn't find a matching child node, default to first child</font>
+00481 parent();
+00482 firstChild();
+00483 }
+00484 <font class="keywordflow">if</font> (leaf)
+00485 error = KEYERR_OUTOFBOUNDS;
+00486 <font class="keywordflow">break</font>;
+00487 }
+00488 }
+00489 <font class="keyword">delete</font> [] buf;
+00490 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="treekeyidx_8h-source.html">treekeyidx.h</a><li><a class="el" href="treekeyidx_8cpp-source.html">treekeyidx.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_tree_key_idx__coll__graph.png b/doc/api-documentation/html/class_tree_key_idx__coll__graph.png
new file mode 100644
index 0000000..df72316
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key_idx__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_tree_key_idx__inherit__graph.png b/doc/api-documentation/html/class_tree_key_idx__inherit__graph.png
new file mode 100644
index 0000000..61bb3c2
--- /dev/null
+++ b/doc/api-documentation/html/class_tree_key_idx__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_u_t_f16_u_t_f8-members.html b/doc/api-documentation/html/class_u_t_f16_u_t_f8-members.html
new file mode 100644
index 0000000..c55034b
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f16_u_t_f8-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF16UTF8 Member List</h1>This is the complete list of members for <a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a>)</td><td><a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF16UTF8</b>() (defined in <a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a>)</td><td><a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f16_u_t_f8.html b/doc/api-documentation/html/class_u_t_f16_u_t_f8.html
new file mode 100644
index 0000000..8197608
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f16_u_t_f8.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UTF16UTF8 class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF16UTF8 Class Reference</h1>This filter converts UTF-16 encoded text to UTF-8.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="utf16utf8_8h-source.html">utf16utf8.h</a>&gt;</code>
+<p>
+<a href="class_u_t_f16_u_t_f8-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UTF16UTF8::UTF16UTF8"></a>
+&nbsp;</td><td valign=bottom><b>UTF16UTF8</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UTF16UTF8::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts UTF-16 encoded text to UTF-8.
+<p>
+
+<p>
+Definition at line <a class="el" href="utf16utf8_8h-source.html#l00029">29</a> of file <a class="el" href="utf16utf8_8h-source.html">utf16utf8.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="utf16utf8_8h-source.html">utf16utf8.h</a><li><a class="el" href="utf16utf8_8cpp-source.html">utf16utf8.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_cantillation-members.html b/doc/api-documentation/html/class_u_t_f8_cantillation-members.html
new file mode 100644
index 0000000..205b82c
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_cantillation-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8Cantillation Member List</h1>This is the complete list of members for <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF8Cantillation</b>() (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~UTF8Cantillation</b>() (defined in <a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>)</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_cantillation.html b/doc/api-documentation/html/class_u_t_f8_cantillation.html
new file mode 100644
index 0000000..f358c18
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_cantillation.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UTF8Cantillation class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8Cantillation Class Reference</h1>This Filter shows/hides Hebrew cantillation marks in UTF8 text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="utf8cantillation_8h-source.html">utf8cantillation.h</a>&gt;</code>
+<p>
+<a href="class_u_t_f8_cantillation-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UTF8Cantillation::UTF8Cantillation"></a>
+&nbsp;</td><td valign=bottom><b>UTF8Cantillation</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UTF8Cantillation::~UTF8Cantillation"></a>
+virtual&nbsp;</td><td valign=bottom><b>~UTF8Cantillation</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="UTF8Cantillation::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="UTF8Cantillation::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="UTF8Cantillation::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="UTF8Cantillation::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="UTF8Cantillation::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="UTF8Cantillation::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="UTF8Cantillation::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="UTF8Cantillation::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="UTF8Cantillation::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="UTF8Cantillation::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="UTF8Cantillation::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Hebrew Cantillation"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="UTF8Cantillation::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Hebrew Cantillation Marks"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides Hebrew cantillation marks in UTF8 text.
+<p>
+
+<p>
+Definition at line <a class="el" href="utf8cantillation_8h-source.html#l00029">29</a> of file <a class="el" href="utf8cantillation_8h-source.html">utf8cantillation.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="utf8cantillation_8h-source.html">utf8cantillation.h</a><li><a class="el" href="utf8cantillation_8cpp-source.html">utf8cantillation.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_greek_accents-members.html b/doc/api-documentation/html/class_u_t_f8_greek_accents-members.html
new file mode 100644
index 0000000..35a3361
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_greek_accents-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8GreekAccents Member List</h1>This is the complete list of members for <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF8GreekAccents</b>() (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~UTF8GreekAccents</b>() (defined in <a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>)</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_greek_accents.html b/doc/api-documentation/html/class_u_t_f8_greek_accents.html
new file mode 100644
index 0000000..77d8147
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_greek_accents.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UTF8GreekAccents class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8GreekAccents Class Reference</h1>This Filter shows/hides Greek Accents marks in UTF8 text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="utf8greekaccents_8h-source.html">utf8greekaccents.h</a>&gt;</code>
+<p>
+<a href="class_u_t_f8_greek_accents-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UTF8GreekAccents::UTF8GreekAccents"></a>
+&nbsp;</td><td valign=bottom><b>UTF8GreekAccents</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UTF8GreekAccents::~UTF8GreekAccents"></a>
+virtual&nbsp;</td><td valign=bottom><b>~UTF8GreekAccents</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="UTF8GreekAccents::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="UTF8GreekAccents::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="UTF8GreekAccents::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="UTF8GreekAccents::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="UTF8GreekAccents::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="UTF8GreekAccents::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="UTF8GreekAccents::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="UTF8GreekAccents::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="UTF8GreekAccents::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="UTF8GreekAccents::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="UTF8GreekAccents::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Greek Accents"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="UTF8GreekAccents::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Greek Accents"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides Greek Accents marks in UTF8 text.
+<p>
+
+<p>
+Definition at line <a class="el" href="utf8greekaccents_8h-source.html#l00029">29</a> of file <a class="el" href="utf8greekaccents_8h-source.html">utf8greekaccents.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="utf8greekaccents_8h-source.html">utf8greekaccents.h</a><li><a class="el" href="utf8greekaccents_8cpp-source.html">utf8greekaccents.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_h_t_m_l-members.html b/doc/api-documentation/html/class_u_t_f8_h_t_m_l-members.html
new file mode 100644
index 0000000..8ffea2a
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_h_t_m_l-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8HTML Member List</h1>This is the complete list of members for <a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>)</td><td><a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF8HTML</b>() (defined in <a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>)</td><td><a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_h_t_m_l.html b/doc/api-documentation/html/class_u_t_f8_h_t_m_l.html
new file mode 100644
index 0000000..226561c
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_h_t_m_l.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UTF8HTML class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8HTML Class Reference</h1>This filter converts UTF-8 text into HTML escape sequences.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="utf8html_8h-source.html">utf8html.h</a>&gt;</code>
+<p>
+<a href="class_u_t_f8_h_t_m_l-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UTF8HTML::UTF8HTML"></a>
+&nbsp;</td><td valign=bottom><b>UTF8HTML</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UTF8HTML::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts UTF-8 text into HTML escape sequences.
+<p>
+
+<p>
+Definition at line <a class="el" href="utf8html_8h-source.html#l00029">29</a> of file <a class="el" href="utf8html_8h-source.html">utf8html.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="utf8html_8h-source.html">utf8html.h</a><li><a class="el" href="utf8html_8cpp-source.html">utf8html.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_hebrew_points-members.html b/doc/api-documentation/html/class_u_t_f8_hebrew_points-members.html
new file mode 100644
index 0000000..e2fb532
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_hebrew_points-members.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8HebrewPoints Member List</h1>This is the complete list of members for <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>off</b> (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>on</b> (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>option</b> (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>options</b> (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optName</b> (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>optTip</b> (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *ival) (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF8HebrewPoints</b>() (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~UTF8HebrewPoints</b>() (defined in <a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>)</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_hebrew_points.html b/doc/api-documentation/html/class_u_t_f8_hebrew_points.html
new file mode 100644
index 0000000..ca310ea
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_hebrew_points.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UTF8HebrewPoints class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8HebrewPoints Class Reference</h1>This Filter shows/hides Hebrew vowel points in UTF8 text.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="utf8hebrewpoints_8h-source.html">utf8hebrewpoints.h</a>&gt;</code>
+<p>
+<a href="class_u_t_f8_hebrew_points-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UTF8HebrewPoints::UTF8HebrewPoints"></a>
+&nbsp;</td><td valign=bottom><b>UTF8HebrewPoints</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UTF8HebrewPoints::~UTF8HebrewPoints"></a>
+virtual&nbsp;</td><td valign=bottom><b>~UTF8HebrewPoints</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a2" doxytag="UTF8HebrewPoints::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a3" doxytag="UTF8HebrewPoints::getOptionName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionName</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="UTF8HebrewPoints::getOptionTip"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionTip</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a5" doxytag="UTF8HebrewPoints::setOptionValue"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setOptionValue</b> (const char *ival)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a6" doxytag="UTF8HebrewPoints::getOptionValue"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOptionValue</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a7" doxytag="UTF8HebrewPoints::getOptionValues"></a>
+virtual OptionsList&nbsp;</td><td valign=bottom><b>getOptionValues</b> ()</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="UTF8HebrewPoints::option"></a>
+bool&nbsp;</td><td valign=bottom><b>option</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="UTF8HebrewPoints::options"></a>
+OptionsList&nbsp;</td><td valign=bottom><b>options</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="UTF8HebrewPoints::on"></a>
+const char&nbsp;</td><td valign=bottom><b>on</b> [] = "On"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="UTF8HebrewPoints::off"></a>
+const char&nbsp;</td><td valign=bottom><b>off</b> [] = "Off"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="UTF8HebrewPoints::optName"></a>
+const char&nbsp;</td><td valign=bottom><b>optName</b> [] = "Hebrew Vowel Points"</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="UTF8HebrewPoints::optTip"></a>
+const char&nbsp;</td><td valign=bottom><b>optTip</b> [] = "Toggles Hebrew Vowel Points"</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This Filter shows/hides Hebrew vowel points in UTF8 text.
+<p>
+
+<p>
+Definition at line <a class="el" href="utf8hebrewpoints_8h-source.html#l00029">29</a> of file <a class="el" href="utf8hebrewpoints_8h-source.html">utf8hebrewpoints.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="utf8hebrewpoints_8h-source.html">utf8hebrewpoints.h</a><li><a class="el" href="utf8hebrewpoints_8cpp-source.html">utf8hebrewpoints.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_latin1-members.html b/doc/api-documentation/html/class_u_t_f8_latin1-members.html
new file mode 100644
index 0000000..7f8cf60
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_latin1-members.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8Latin1 Member List</h1>This is the complete list of members for <a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a>)</td><td><a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>replacementChar</b> (defined in <a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a>)</td><td><a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF8Latin1</b>(char rchar='?') (defined in <a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a>)</td><td><a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_latin1.html b/doc/api-documentation/html/class_u_t_f8_latin1.html
new file mode 100644
index 0000000..1be602c
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_latin1.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UTF8Latin1 class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8Latin1 Class Reference</h1>This filter converts UTF-8 encoded text to Latin-1.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="utf8latin1_8h-source.html">utf8latin1.h</a>&gt;</code>
+<p>
+<a href="class_u_t_f8_latin1-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UTF8Latin1::UTF8Latin1"></a>
+&nbsp;</td><td valign=bottom><b>UTF8Latin1</b> (char rchar='?')</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UTF8Latin1::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="UTF8Latin1::replacementChar"></a>
+char&nbsp;</td><td valign=bottom><b>replacementChar</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts UTF-8 encoded text to Latin-1.
+<p>
+
+<p>
+Definition at line <a class="el" href="utf8latin1_8h-source.html#l00029">29</a> of file <a class="el" href="utf8latin1_8h-source.html">utf8latin1.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="utf8latin1_8h-source.html">utf8latin1.h</a><li><a class="el" href="utf8latin1_8cpp-source.html">utf8latin1.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_u_t_f16-members.html b/doc/api-documentation/html/class_u_t_f8_u_t_f16-members.html
new file mode 100644
index 0000000..44aa5a7
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_u_t_f16-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8UTF16 Member List</h1>This is the complete list of members for <a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>)</td><td><a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UTF8UTF16</b>() (defined in <a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>)</td><td><a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_u_t_f8_u_t_f16.html b/doc/api-documentation/html/class_u_t_f8_u_t_f16.html
new file mode 100644
index 0000000..6644d8e
--- /dev/null
+++ b/doc/api-documentation/html/class_u_t_f8_u_t_f16.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UTF8UTF16 class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UTF8UTF16 Class Reference</h1>This filter converts UTF-8 encoded text to UTF-16.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="utf8utf16_8h-source.html">utf8utf16.h</a>&gt;</code>
+<p>
+<a href="class_u_t_f8_u_t_f16-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UTF8UTF16::UTF8UTF16"></a>
+&nbsp;</td><td valign=bottom><b>UTF8UTF16</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UTF8UTF16::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts UTF-8 encoded text to UTF-16.
+<p>
+
+<p>
+Definition at line <a class="el" href="utf8utf16_8h-source.html#l00029">29</a> of file <a class="el" href="utf8utf16_8h-source.html">utf8utf16.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="utf8utf16_8h-source.html">utf8utf16.h</a><li><a class="el" href="utf8utf16_8cpp-source.html">utf8utf16.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_unicode_r_t_f-members.html b/doc/api-documentation/html/class_unicode_r_t_f-members.html
new file mode 100644
index 0000000..2ccd09d
--- /dev/null
+++ b/doc/api-documentation/html/class_unicode_r_t_f-members.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UnicodeRTF Member List</h1>This is the complete list of members for <a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionName</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionTip</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValue</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOptionValues</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen, const SWKey *key, const SWModule *=0) (defined in <a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a>)</td><td><a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ProcessText</b>(char *text, int maxlen=-1) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setOptionValue</b>(const char *) (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>UnicodeRTF</b>() (defined in <a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a>)</td><td><a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>~SWFilter</b>() (defined in <b>SWFilter</b>)</td><td><a class="el" href="class_s_w_filter.html">SWFilter</a></td><td><code> [inline, virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_unicode_r_t_f.html b/doc/api-documentation/html/class_unicode_r_t_f.html
new file mode 100644
index 0000000..6c06e0f
--- /dev/null
+++ b/doc/api-documentation/html/class_unicode_r_t_f.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>UnicodeRTF class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>UnicodeRTF Class Reference</h1>This filter converts UTF-8 text into RTF Unicode tags.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="unicodertf_8h-source.html">unicodertf.h</a>&gt;</code>
+<p>
+<a href="class_unicode_r_t_f-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="a0" doxytag="UnicodeRTF::UnicodeRTF"></a>
+&nbsp;</td><td valign=bottom><b>UnicodeRTF</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a1" doxytag="UnicodeRTF::ProcessText"></a>
+virtual char&nbsp;</td><td valign=bottom><b>ProcessText</b> (char *text, int maxlen, const <a class="el" href="class_s_w_key.html">SWKey</a> *key, const <a class="el" href="class_s_w_module.html">SWModule</a> *=0)</td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This filter converts UTF-8 text into RTF Unicode tags.
+<p>
+
+<p>
+Definition at line <a class="el" href="unicodertf_8h-source.html#l00030">30</a> of file <a class="el" href="unicodertf_8h-source.html">unicodertf.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="unicodertf_8h-source.html">unicodertf.h</a><li><a class="el" href="unicodertf_8cpp-source.html">unicodertf.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_verse_key-members.html b/doc/api-documentation/html/class_verse_key-members.html
new file mode 100644
index 0000000..aba6831
--- /dev/null
+++ b/doc/api-documentation/html/class_verse_key-members.html
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>VerseKey Member List</h1>This is the complete list of members for <a class="el" href="class_verse_key.html">VerseKey</a>, including all inherited members.<table>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a39">_compare</a>(const VerseKey &amp;ikey)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>abbrevs</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>abbrevsCnt</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#o8">autonorm</a></td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a31">AutoNormalize</a>(char iautonorm=MAXPOS(char))</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>BMAX</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>book</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a23">Book</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a27">Book</a>(char ibook)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>books</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>builtin_abbrevs</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>builtin_BMAX</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>builtin_books</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>chapter</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a24">Chapter</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a28">Chapter</a>(int ichapter)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>classdef</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a9">ClearBounds</a>()</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a10">clone</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a38">compare</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a14">copyFrom</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a15">copyFrom</a>(const VerseKey &amp;ikey)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a17">decrement</a>(int step)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a12">equals</a>(const SWKey &amp;ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>error</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a6">Error</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#c6">findindex</a>(long *array, int size, long value)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#c4">freshtext</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getBookAbbrev</b>(const char *abbr) (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getBookAbbrev</b>() const (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getBookName</b>() const (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_object.html#a0">getClass</a>() const</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [inline]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getLocale</b>() const (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getOSISRef</b>() const (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>getShortText</b>() const (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a11">getText</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#o9">headings</a></td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a32">Headings</a>(char iheadings=MAXPOS(char))</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a18">increment</a>(int step)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a34">Index</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a35">Index</a>(long iindex)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#c3">init</a>()</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>initBounds</b>() const (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#c2">initstatics</a>()</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#r3">instance</a></td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>internalListKey</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>keytext</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>locale</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>localeCache</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>lowerBound</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a5">LowerBound</a>(const char *lb)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a7">LowerBound</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>myclass</b> (defined in <a class="el" href="class_s_w_object.html">SWObject</a>)</td><td><a class="el" href="class_s_w_object.html">SWObject</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>NewIndex</b>() const (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a30">Normalize</a>(char autocheck=0)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ntbks</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ntbooks</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ntcps</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>offsets</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>offsize</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>operator=</b>(const VerseKey &amp;ikey) (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>otbks</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>otbooks</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>otcps</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#c5">parse</a>()</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>ParseVerseList</b>(const char *buf, const char *defaultKey="Genesis 1:1", bool expandRange=false) (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>persist</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a4">Persist</a>() const</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a5">Persist</a>(signed char ikey)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setBookAbbrevs</b>(const struct abbrev *bookAbbrevs, unsigned int size=0) (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setBooks</b>(const char *iBMAX, struct sbook **ibooks) (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>setLocale</b>(const char *name) (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a16">setPosition</a>(SW_POSITION)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a13">setText</a>(const char *ikey)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a0">SWKey</a>(const char *ikey=0)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a1">SWKey</a>(SWKey const &amp;k)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#o4">testament</a></td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a22">Testament</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a26">Testament</a>(char itestament)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>Traversable</b>() (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>upperBound</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a6">UpperBound</a>(const char *ub)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a8">UpperBound</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>userData</b> (defined in <a class="el" href="class_s_w_key.html">SWKey</a>)</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>verse</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a25">Verse</a>() const</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a29">Verse</a>(int iverse)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a0">VerseKey</a>(const char *ikey=0)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a1">VerseKey</a>(const SWKey *ikey)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a2">VerseKey</a>(const char *min, const char *max)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a3">VerseKey</a>(const VerseKey &amp;k)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><b>vm</b> (defined in <a class="el" href="class_verse_key.html">VerseKey</a>)</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [private, static]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_s_w_key.html#a2">~SWKey</a>()</td><td><a class="el" href="class_s_w_key.html">SWKey</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="class_verse_key.html#a4">~VerseKey</a>()</td><td><a class="el" href="class_verse_key.html">VerseKey</a></td><td><code> [virtual]</code></td></tr>
+</table><hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_verse_key.html b/doc/api-documentation/html/class_verse_key.html
new file mode 100644
index 0000000..3daed2c
--- /dev/null
+++ b/doc/api-documentation/html/class_verse_key.html
@@ -0,0 +1,1909 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>VerseKey class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>VerseKey Class Reference</h1>Class VerseKey The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="versekey_8h-source.html">versekey.h</a>&gt;</code>
+<p>
+Inheritance diagram for VerseKey:<p><center><img src="class_verse_key__inherit__graph.png" border="0" usemap="#_verse_key__inherit__map" alt="Inheritance graph"></center>
+<map name="_verse_key__inherit__map">
+<area href="class_s_w_key.html" shape="rect" coords="22,84,78,103" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="14,15,86,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for VerseKey:<p><center><img src="class_verse_key__coll__graph.png" border="0" usemap="#_verse_key__coll__map" alt="Collaboration graph"></center>
+<map name="_verse_key__coll__map">
+<area href="class_s_w_key.html" shape="rect" coords="122,196,178,215" alt="">
+<area href="class_list_key.html" shape="rect" coords="161,287,214,305" alt="">
+<area href="class_s_w_object.html" shape="rect" coords="183,105,255,124" alt="">
+<area href="class_s_w_class.html" shape="rect" coords="107,15,171,33" alt="">
+</map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_verse_key-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a0">VerseKey</a> (const char *ikey=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>VerseKey Constructor - initializes Instance of VerseKey.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a1">VerseKey</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> *ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>VerseKey Constructor - initializes instance of VerseKey.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a2">VerseKey</a> (const char *min, const char *max)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>VerseKey Constructor - initializes instance of VerseKey with boundariess - see also <a class="el" href="class_verse_key.html#a5">LowerBound</a> and <a class="el" href="class_verse_key.html#a6">UpperBound</a>.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a3">VerseKey</a> (const VerseKey &amp;k)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>VerseKey Copy Constructor - will create a new VerseKey based on an existing one.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a4" doxytag="VerseKey::~VerseKey"></a>
+virtual&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a4">~VerseKey</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>VerseKey Destructor Cleans up an instance of VerseKey.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>VerseKey &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a5">LowerBound</a> (const char *lb)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>sets the lower boundary for this VerseKey and returns the new boundary.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>VerseKey &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a6">UpperBound</a> (const char *ub)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>sets the upper boundary for this VerseKey and returns the new boundary.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>VerseKey &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a7">LowerBound</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>gets the lower boundary of this VerseKey.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>VerseKey &amp;&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a8">UpperBound</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>gets the upper boundary of this VerseKey.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a9" doxytag="VerseKey::ClearBounds"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a9">ClearBounds</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>clears the boundaries of this VerseKey.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a10" doxytag="VerseKey::clone"></a>
+virtual <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a10">clone</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Creates a new <a class="el" href="class_s_w_key.html">SWKey</a> based on the current VerseKey see also the Copy Constructor.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a11" doxytag="VerseKey::getText"></a>
+virtual const char *&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a11">getText</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>refreshes keytext before returning if cast to a (char *) is requested.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a12" doxytag="VerseKey::getShortText"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getShortText</b> () const</td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a13">setText</a> (const char *ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a14">copyFrom</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.</em> <a href="#a14">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a15" doxytag="VerseKey::copyFrom"></a>
+virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a15">copyFrom</a> (const VerseKey &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Equates this VerseKey to another VerseKey.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a16">setPosition</a> (SW_POSITION)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Positions this key.</em> <a href="#a16">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a17">decrement</a> (int step)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Decrements key a number of verses.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a18">increment</a> (int step)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Increments key a number of verses.</em> <a href="#a18">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a19" doxytag="VerseKey::Traversable"></a>
+virtual char&nbsp;</td><td valign=bottom><b>Traversable</b> ()</td></tr>
+<tr><td nowrap align=right valign=top><a name="a20" doxytag="VerseKey::getBookName"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getBookName</b> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a21" doxytag="VerseKey::getBookAbbrev"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getBookAbbrev</b> () const</td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a22">Testament</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets testament.</em> <a href="#a22">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a23">Book</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets book.</em> <a href="#a23">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a24">Chapter</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets chapter.</em> <a href="#a24">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a25">Verse</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets verse.</em> <a href="#a25">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a26">Testament</a> (char itestament)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets testament.</em> <a href="#a26">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a27">Book</a> (char ibook)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets book.</em> <a href="#a27">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a28">Chapter</a> (int ichapter)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets chapter.</em> <a href="#a28">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a29">Verse</a> (int iverse)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets verse.</em> <a href="#a29">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a30">Normalize</a> (char autocheck=0)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>checks limits and normalizes if necessary (e.g.</em> <a href="#a30">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a31">AutoNormalize</a> (char iautonorm=MAXPOS(char))</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets flag that tells VerseKey to automatically normalize itself when modified.</em> <a href="#a31">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a32">Headings</a> (char iheadings=MAXPOS(char))</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets/gets flag that tells VerseKey to include chapter/book/testament/module headings.</em> <a href="#a32">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a33" doxytag="VerseKey::NewIndex"></a>
+virtual long&nbsp;</td><td valign=bottom><b>NewIndex</b> () const</td></tr>
+<tr><td nowrap align=right valign=top>virtual long&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a34">Index</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Gets index based upon current verse.</em> <a href="#a34">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual long&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a35">Index</a> (long iindex)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Sets index based upon current verse.</em> <a href="#a35">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a36" doxytag="VerseKey::getOSISRef"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getOSISRef</b> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a37" doxytag="VerseKey::ParseVerseList"></a>
+virtual <a class="el" href="class_list_key.html">ListKey</a>&nbsp;</td><td valign=bottom><b>ParseVerseList</b> (const char *buf, const char *defaultKey="Genesis 1:1", bool expandRange=false)</td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a38">compare</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Compares another <a class="el" href="class_s_w_key.html">SWKey</a> object.</em> <a href="#a38">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#a39">_compare</a> (const VerseKey &amp;ikey)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Compares another VerseKey object.</em> <a href="#a39">More...</a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="a40" doxytag="VerseKey::setBookAbbrevs"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setBookAbbrevs</b> (const struct abbrev *bookAbbrevs, unsigned int size=0)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a41" doxytag="VerseKey::setBooks"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setBooks</b> (const char *iBMAX, struct sbook **ibooks)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a42" doxytag="VerseKey::setLocale"></a>
+virtual void&nbsp;</td><td valign=bottom><b>setLocale</b> (const char *name)</td></tr>
+<tr><td nowrap align=right valign=top><a name="a43" doxytag="VerseKey::getLocale"></a>
+virtual const char *&nbsp;</td><td valign=bottom><b>getLocale</b> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="a44" doxytag="VerseKey::operator="></a>
+virtual SWKEY_OPERATORS <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td><td valign=bottom><b>operator=</b> (const VerseKey &amp;ikey)</td></tr>
+<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="m0" doxytag="VerseKey::BMAX"></a>
+const char *&nbsp;</td><td valign=bottom><b>BMAX</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="m1" doxytag="VerseKey::books"></a>
+sbook **&nbsp;</td><td valign=bottom><b>books</b></td></tr>
+<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="p0" doxytag="VerseKey::builtin_BMAX"></a>
+const char&nbsp;</td><td valign=bottom><b>builtin_BMAX</b> [2] = {39, 27}</td></tr>
+<tr><td nowrap align=right valign=top><a name="p1" doxytag="VerseKey::builtin_books"></a>
+sbook *&nbsp;</td><td valign=bottom><b>builtin_books</b> [2] = {0,0}</td></tr>
+<tr><td nowrap align=right valign=top><a name="p2" doxytag="VerseKey::builtin_abbrevs"></a>
+const struct abbrev&nbsp;</td><td valign=bottom><b>builtin_abbrevs</b> []</td></tr>
+<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="c0" doxytag="VerseKey::getBookAbbrev"></a>
+int&nbsp;</td><td valign=bottom><b>getBookAbbrev</b> (const char *abbr)</td></tr>
+<tr><td nowrap align=right valign=top><a name="c1" doxytag="VerseKey::initBounds"></a>
+void&nbsp;</td><td valign=bottom><b>initBounds</b> () const</td></tr>
+<tr><td nowrap align=right valign=top><a name="c2" doxytag="VerseKey::initstatics"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#c2">initstatics</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>initialize and allocate books array.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="c3" doxytag="VerseKey::init"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#c3">init</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>initializes this <a class="el" href="class_verse_key.html#a0">VerseKey</a>().</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="c4" doxytag="VerseKey::freshtext"></a>
+void&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#c4">freshtext</a> () const</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Refresh keytext based on testament|book|chapter|verse default auto normalization to true default display headings option is false.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="c5" doxytag="VerseKey::parse"></a>
+virtual char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#c5">parse</a> ()</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Parse a character array into testament|book|chapter|verse.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#c6">findindex</a> (long *array, int size, long value)</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>Binary search to find the index closest, but less than the given value.</em> <a href="#c6">More...</a><em></em></font><br><br></td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="o0" doxytag="VerseKey::internalListKey"></a>
+<a class="el" href="class_list_key.html">ListKey</a>&nbsp;</td><td valign=bottom><b>internalListKey</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o1" doxytag="VerseKey::abbrevs"></a>
+const struct abbrev *&nbsp;</td><td valign=bottom><b>abbrevs</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o2" doxytag="VerseKey::locale"></a>
+char *&nbsp;</td><td valign=bottom><b>locale</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o3" doxytag="VerseKey::abbrevsCnt"></a>
+int&nbsp;</td><td valign=bottom><b>abbrevsCnt</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o4" doxytag="VerseKey::testament"></a>
+signed char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#o4">testament</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>The Testament: 0 - Old; 1 - New.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="o5" doxytag="VerseKey::book"></a>
+signed char&nbsp;</td><td valign=bottom><b>book</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o6" doxytag="VerseKey::chapter"></a>
+signed int&nbsp;</td><td valign=bottom><b>chapter</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o7" doxytag="VerseKey::verse"></a>
+signed int&nbsp;</td><td valign=bottom><b>verse</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o8" doxytag="VerseKey::autonorm"></a>
+char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#o8">autonorm</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>flag for auto normalization.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="o9" doxytag="VerseKey::headings"></a>
+char&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#o9">headings</a></td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>flag for headings on/off.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="o10" doxytag="VerseKey::lowerBound"></a>
+VerseKey *&nbsp;</td><td valign=bottom><b>lowerBound</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="o11" doxytag="VerseKey::upperBound"></a>
+VerseKey *&nbsp;</td><td valign=bottom><b>upperBound</b></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td nowrap align=right valign=top><a name="r0" doxytag="VerseKey::classdef"></a>
+<a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;</td><td valign=bottom><b>classdef</b></td></tr>
+<tr><td nowrap align=right valign=top><a name="r1" doxytag="VerseKey::offsets"></a>
+long *&nbsp;</td><td valign=bottom><b>offsets</b> [2][2] = {{VerseKey::otbks, VerseKey::otcps}, {VerseKey::ntbks, VerseKey::ntcps}}</td></tr>
+<tr><td nowrap align=right valign=top><a name="r2" doxytag="VerseKey::offsize"></a>
+int&nbsp;</td><td valign=bottom><b>offsize</b> [2][2]</td></tr>
+<tr><td nowrap align=right valign=top><a name="r3" doxytag="VerseKey::instance"></a>
+int&nbsp;</td><td valign=bottom><a class="el" href="class_verse_key.html#r3">instance</a> = 0</td></tr>
+<tr><td>&nbsp;</td><td><font size=-1><em>number of instantiated VerseKey objects or derivitives.</em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top><a name="r4" doxytag="VerseKey::otbooks"></a>
+sbook&nbsp;</td><td valign=bottom><b>otbooks</b> []</td></tr>
+<tr><td nowrap align=right valign=top><a name="r5" doxytag="VerseKey::ntbooks"></a>
+sbook&nbsp;</td><td valign=bottom><b>ntbooks</b> []</td></tr>
+<tr><td nowrap align=right valign=top><a name="r6" doxytag="VerseKey::otbks"></a>
+long&nbsp;</td><td valign=bottom><b>otbks</b> []</td></tr>
+<tr><td nowrap align=right valign=top><a name="r7" doxytag="VerseKey::otcps"></a>
+long&nbsp;</td><td valign=bottom><b>otcps</b> []</td></tr>
+<tr><td nowrap align=right valign=top><a name="r8" doxytag="VerseKey::ntbks"></a>
+long&nbsp;</td><td valign=bottom><b>ntbks</b> []</td></tr>
+<tr><td nowrap align=right valign=top><a name="r9" doxytag="VerseKey::ntcps"></a>
+long&nbsp;</td><td valign=bottom><b>ntcps</b> []</td></tr>
+<tr><td nowrap align=right valign=top><a name="r10" doxytag="VerseKey::vm"></a>
+int&nbsp;</td><td valign=bottom><b>vm</b> []</td></tr>
+<tr><td nowrap align=right valign=top><a name="r11" doxytag="VerseKey::localeCache"></a>
+LocaleCache&nbsp;</td><td valign=bottom><b>localeCache</b></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Class VerseKey The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
+<p>
+
+<p>
+Definition at line <a class="el" href="versekey_8h-source.html#l00072">72</a> of file <a class="el" href="versekey_8h-source.html">versekey.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a name="a0" doxytag="VerseKey::VerseKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+VerseKey Constructor - initializes Instance of VerseKey.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+text key (will take various forms of 'BOOK CH:VS'. See <a class="el" href="class_verse_key.html#c5">parse</a> for more detailed information) </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00089">89</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00048">init</a>(), and <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>().
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l00120">clone</a>().
+<p>
+<div class="fragment"><pre>00089 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>(ikey)
+00090 {
+00091 <a class="code" href="class_verse_key.html#c3">init</a>();
+00092 <font class="keywordflow">if</font> (ikey)
+00093 <a class="code" href="class_verse_key.html#c5">parse</a>();
+00094 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a1" doxytag="VerseKey::VerseKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+VerseKey Constructor - initializes instance of VerseKey.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+base key (will take various forms of 'BOOK CH:VS'. See <a class="el" href="class_verse_key.html#c5">parse</a> for more detailed information) </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00074">74</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00048">init</a>(), and <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>().
+<p>
+<div class="fragment"><pre>00074 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>(*ikey)
+00075 {
+00076 <a class="code" href="class_verse_key.html#c3">init</a>();
+00077 <font class="keywordflow">if</font> (ikey)
+00078 <a class="code" href="class_verse_key.html#c5">parse</a>();
+00079 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a2" doxytag="VerseKey::VerseKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>min</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>max</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+VerseKey Constructor - initializes instance of VerseKey with boundariess - see also <a class="el" href="class_verse_key.html#a5">LowerBound</a> and <a class="el" href="class_verse_key.html#a6">UpperBound</a>.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>min</em>&nbsp;</td><td>
+the lower boundary of the new VerseKey </td></tr>
+<tr><td valign=top><em>max</em>&nbsp;</td><td>
+the upper boundary of the new VerseKey </td></tr>
+</table>
+</dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00111">111</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00048">init</a>(), <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), and <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>().
+<p>
+<div class="fragment"><pre>00111 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>()
+00112 {
+00113 <a class="code" href="class_verse_key.html#c3">init</a>();
+00114 <a class="code" href="class_verse_key.html#a7">LowerBound</a>(min);
+00115 <a class="code" href="class_verse_key.html#a8">UpperBound</a>(max);
+00116 <a class="code" href="class_verse_key.html#a16">setPosition</a>(TOP);
+00117 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a3" doxytag="VerseKey::VerseKey"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const VerseKey &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>k</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+VerseKey Copy Constructor - will create a new VerseKey based on an existing one.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>k</em>&nbsp;</td><td>
+the VerseKey to copy from </td></tr>
+</table>
+</dl> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a name="a39" doxytag="VerseKey::_compare"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int VerseKey::_compare </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const VerseKey &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compares another VerseKey object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+key to compare with this one </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+&gt;0 if this VerseKey is greater than compare VerseKey, &lt;0 if this VerseKey is smaller than compare VerseKey, 0 if the keys are the same </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01402">1402</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l01075">Book</a>(), <a class="el" href="versekey_8cpp-source.html#l01087">Chapter</a>(), <a class="el" href="versekey_8cpp-source.html#l01063">Testament</a>(), and <a class="el" href="versekey_8cpp-source.html#l01099">Verse</a>().
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01385">compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>(), and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
+<p>
+<div class="fragment"><pre>01403 {
+01404 <font class="keywordtype">long</font> keyval1 = 0;
+01405 <font class="keywordtype">long</font> keyval2 = 0;
+01406
+01407 keyval1 += <a class="code" href="class_verse_key.html#a22">Testament</a>() * 1000000000;
+01408 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a22">Testament</a>() * 1000000000;
+01409 keyval1 += <a class="code" href="class_verse_key.html#a23">Book</a>() * 1000000;
+01410 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a23">Book</a>() * 1000000;
+01411 keyval1 += <a class="code" href="class_verse_key.html#a24">Chapter</a>() * 1000;
+01412 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>() * 1000;
+01413 keyval1 += <a class="code" href="class_verse_key.html#a25">Verse</a>();
+01414 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+01415 keyval1 -= keyval2;
+01416 keyval1 = (keyval1) ? ((keyval1 &gt; 0) ? 1 : -1) <font class="comment">/*keyval1/labs(keyval1)*/</font>:0; <font class="comment">// -1 | 0 | 1</font>
+01417 <font class="keywordflow">return</font> keyval1;
+01418 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a31" doxytag="VerseKey::AutoNormalize"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char VerseKey::AutoNormalize </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>iautonorm</em> = MAXPOS(char) </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets flag that tells VerseKey to automatically normalize itself when modified.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>iautonorm</em>&nbsp;</td><td>
+value which to set autonorm [MAXPOS(char)] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+if unchanged -&gt; value of autonorm, if changed -&gt; previous value of autonorm </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01203">1203</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8h-source.html#l00121">autonorm</a>, and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
+<p>
+<div class="fragment"><pre>01204 {
+01205 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o8">autonorm</a>;
+01206
+01207 <font class="keywordflow">if</font> (iautonorm != MAXPOS(<font class="keywordtype">char</font>)) {
+01208 <a class="code" href="class_verse_key.html#o8">autonorm</a> = iautonorm;
+01209 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01210 }
+01211 <font class="keywordflow">return</font> retval;
+01212 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a27" doxytag="VerseKey::Book"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char VerseKey::Book </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ibook</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets book.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ibook</em>&nbsp;</td><td>
+value which to set book [MAXPOS(char)] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+if unchanged -&gt; value of book, if changed -&gt; previous value of book </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01137">1137</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l01087">Chapter</a>(), and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
+<p>
+<div class="fragment"><pre>01138 {
+01139 <font class="keywordtype">char</font> retval = book;
+01140
+01141 <a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+01142 book = ibook;
+01143 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01144
+01145 <font class="keywordflow">return</font> retval;
+01146 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a23" doxytag="VerseKey::Book"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char VerseKey::Book </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets book.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+value of book </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01075">1075</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
+<p>
+<div class="fragment"><pre>01076 {
+01077 <font class="keywordflow">return</font> book;
+01078 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a28" doxytag="VerseKey::Chapter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int VerseKey::Chapter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ichapter</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets chapter.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ichapter</em>&nbsp;</td><td>
+value which to set chapter [MAXPOS(int)] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+if unchanged -&gt; value of chapter, if changed -&gt; previous value of chapter </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01159">1159</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), and <a class="el" href="versekey_8cpp-source.html#l01099">Verse</a>().
+<p>
+<div class="fragment"><pre>01160 {
+01161 <font class="keywordtype">int</font> retval = chapter;
+01162
+01163 <a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+01164 chapter = ichapter;
+01165 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01166
+01167 <font class="keywordflow">return</font> retval;
+01168 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a24" doxytag="VerseKey::Chapter"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int VerseKey::Chapter </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets chapter.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+value of chapter </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01087">1087</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01137">Book</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
+<p>
+<div class="fragment"><pre>01088 {
+01089 <font class="keywordflow">return</font> chapter;
+01090 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a38" doxytag="VerseKey::compare"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int VerseKey::compare </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compares another <a class="el" href="class_s_w_key.html">SWKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+key to compare with this one </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+&gt;0 if this VerseKey is greater than compare <a class="el" href="class_s_w_key.html">SWKey</a>, &lt;0 if this VerseKey is smaller than compare <a class="el" href="class_s_w_key.html">SWKey</a>, 0 if the keys are the same </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a11">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01385">1385</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>().
+<p>
+<div class="fragment"><pre>01386 {
+01387 <a class="code" href="class_verse_key.html">VerseKey</a> ivkey = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)ikey;
+01388 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#a39">_compare</a>(ivkey);
+01389 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a14" doxytag="VerseKey::copyFrom"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void VerseKey::copyFrom </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+other swkey object </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a8">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00833">833</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00126">SWKey::copyFrom</a>(), and <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>().
+<p>
+<div class="fragment"><pre>00833 {
+00834 <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey);
+00835
+00836 <a class="code" href="class_verse_key.html#c5">parse</a>();
+00837 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a17" doxytag="VerseKey::decrement"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void VerseKey::decrement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>step</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Decrements key a number of verses.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>decrement</em>&nbsp;</td><td>
+Number of verses to jump backward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a14">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00941">941</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), <a class="el" href="versekey_8h-source.html#l00124">headings</a>, and <a class="el" href="versekey_8cpp-source.html#l01271">Index</a>().
+<p>
+<div class="fragment"><pre>00941 {
+00942 <font class="keywordtype">char</font> ierror = 0;
+00943
+00944 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() - step);
+00945 <font class="keywordflow">while</font> ((!verse) &amp;&amp; (!<a class="code" href="class_verse_key.html#o9">headings</a>) &amp;&amp; (!ierror)) {
+00946 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() - 1);
+00947 ierror = <a class="code" href="class_s_w_key.html#a6">Error</a>();
+00948 }
+00949 <font class="keywordflow">if</font> ((ierror) &amp;&amp; (!<a class="code" href="class_verse_key.html#o9">headings</a>))
+00950 (*this)++;
+00951
+00952 error = (ierror) ? ierror : error;
+00953 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="c6" doxytag="VerseKey::findindex"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int VerseKey::findindex </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">long *&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>array</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>long&nbsp;</td>
+ <td class="mdname" nowrap>&nbsp; <em>value</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Binary search to find the index closest, but less than the given value.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>array</em>&nbsp;</td><td>
+long * to array to search </td></tr>
+<tr><td valign=top><em>size</em>&nbsp;</td><td>
+number of elements in the array </td></tr>
+<tr><td valign=top><em>value</em>&nbsp;</td><td>
+value to find </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+the index into the array that is less than but closest to value </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01249">1249</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>().
+<p>
+<div class="fragment"><pre>01250 {
+01251 <font class="keywordtype">int</font> lbound, ubound, tval;
+01252
+01253 lbound = 0;
+01254 ubound = size - 1;
+01255 <font class="keywordflow">while</font> ((ubound - lbound) &gt; 1) {
+01256 tval = lbound + (ubound-lbound)/2;
+01257 <font class="keywordflow">if</font> (array[tval] &lt;= value)
+01258 lbound = tval;
+01259 <font class="keywordflow">else</font> ubound = tval;
+01260 }
+01261 <font class="keywordflow">return</font> (array[ubound] &lt;= value) ? ubound : lbound;
+01262 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a32" doxytag="VerseKey::Headings"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char VerseKey::Headings </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>iheadings</em> = MAXPOS(char) </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets flag that tells VerseKey to include chapter/book/testament/module headings.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>iheadings</em>&nbsp;</td><td>
+value which to set headings [MAXPOS(char)] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+if unchanged -&gt; value of headings, if changed -&gt; previous value of headings </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01226">1226</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8h-source.html#l00124">headings</a>, and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
+<p>
+<div class="fragment"><pre>01227 {
+01228 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o9">headings</a>;
+01229
+01230 <font class="keywordflow">if</font> (iheadings != MAXPOS(<font class="keywordtype">char</font>)) {
+01231 <a class="code" href="class_verse_key.html#o9">headings</a> = iheadings;
+01232 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01233 }
+01234 <font class="keywordflow">return</font> retval;
+01235 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a18" doxytag="VerseKey::increment"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void VerseKey::increment </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>step</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Increments key a number of verses.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>increment</em>&nbsp;</td><td>
+Number of verses to jump forward </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a15">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00921">921</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), <a class="el" href="versekey_8h-source.html#l00124">headings</a>, and <a class="el" href="versekey_8cpp-source.html#l01271">Index</a>().
+<p>
+<div class="fragment"><pre>00921 {
+00922 <font class="keywordtype">char</font> ierror = 0;
+00923 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() + step);
+00924 <font class="keywordflow">while</font> ((!verse) &amp;&amp; (!<a class="code" href="class_verse_key.html#o9">headings</a>) &amp;&amp; (!ierror)) {
+00925 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() + 1);
+00926 ierror = <a class="code" href="class_s_w_key.html#a6">Error</a>();
+00927 }
+00928
+00929 error = (ierror) ? ierror : error;
+00930 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a35" doxytag="VerseKey::Index"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> long VerseKey::Index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">long&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>iindex</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets index based upon current verse.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>iindex</em>&nbsp;</td><td>
+value to set index to </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+offset </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01316">1316</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01249">findindex</a>(), <a class="el" href="versekey_8cpp-source.html#l01271">Index</a>(), <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8h-source.html#l00115">testament</a>, and <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>().
+<p>
+<div class="fragment"><pre>01317 {
+01318 <font class="keywordtype">long</font> offset;
+01319
+01320 <font class="comment">// This is the dirty stuff --------------------------------------------</font>
+01321
+01322 <font class="keywordflow">if</font> (!<a class="code" href="class_verse_key.html#o4">testament</a>)
+01323 <a class="code" href="class_verse_key.html#o4">testament</a> = 1;
+01324
+01325 <font class="keywordflow">if</font> (iindex &lt; 1) { <font class="comment">// if (-) or module heading</font>
+01326 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 2) {
+01327 <font class="keywordflow">if</font> (iindex &lt; 0) {
+01328 <a class="code" href="class_verse_key.html#o4">testament</a> = 0; <font class="comment">// previously we changed 0 -&gt; 1</font>
+01329 error = KEYERR_OUTOFBOUNDS;
+01330 }
+01331 <font class="keywordflow">else</font> <a class="code" href="class_verse_key.html#o4">testament</a> = 0; <font class="comment">// we want module heading</font>
+01332 }
+01333 <font class="keywordflow">else</font> {
+01334 <a class="code" href="class_verse_key.html#o4">testament</a>--;
+01335 iindex = (offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1]-1] + books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]-1].versemax[books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]-1].chapmax-1]) + iindex; <font class="comment">// What a doozy! ((offset of last chapter + number of verses in the last chapter) + iindex)</font>
+01336 }
+01337 }
+01338
+01339 <font class="comment">// --------------------------------------------------------------------</font>
+01340
+01341
+01342 <font class="keywordflow">if</font> (testament) {
+01343 <font class="keywordflow">if</font> ((!error) &amp;&amp; (iindex)) {
+01344 offset = <a class="code" href="class_verse_key.html#c6">findindex</a>(offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1], offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1], iindex);
+01345 verse = iindex - offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][offset];
+01346 book = <a class="code" href="class_verse_key.html#c6">findindex</a>(offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0], offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0], offset);
+01347 chapter = offset - offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0][VerseKey::book];
+01348 verse = (chapter) ? verse : 0; <font class="comment">// funny check. if we are index=1 (testmt header) all gets set to 0 exept verse. Don't know why. Fix if you figure out. Think its in the offsets table.</font>
+01349 <font class="keywordflow">if</font> (verse) { <font class="comment">// only check if -1 won't give negative</font>
+01350 <font class="keywordflow">if</font> (verse &gt; books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1]) {
+01351 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 1) {
+01352 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+01353 error = KEYERR_OUTOFBOUNDS;
+01354 }
+01355 <font class="keywordflow">else</font> {
+01356 <a class="code" href="class_verse_key.html#o4">testament</a>++;
+01357 <a class="code" href="class_verse_key.html#a34">Index</a>(verse - books[<a class="code" href="class_verse_key.html#o4">testament</a>-2][book-1].versemax[chapter-1]);
+01358 }
+01359 }
+01360 }
+01361 }
+01362 }
+01363 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a8">UpperBound</a>()) &gt; 0) {
+01364 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>();
+01365 error = KEYERR_OUTOFBOUNDS;
+01366 }
+01367 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a7">LowerBound</a>()) &lt; 0) {
+01368 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>();
+01369 error = KEYERR_OUTOFBOUNDS;
+01370 }
+01371 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#a34">Index</a>();
+01372 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a34" doxytag="VerseKey::Index"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> long VerseKey::Index </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets index based upon current verse.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+offset </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a17">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01271">1271</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8h-source.html#l00115">testament</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l00941">decrement</a>(), <a class="el" href="versekey_8cpp-source.html#l00921">increment</a>(), and <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>().
+<p>
+<div class="fragment"><pre>01272 {
+01273 <font class="keywordtype">long</font> offset;
+01274
+01275 <font class="keywordflow">if</font> (!<a class="code" href="class_verse_key.html#o4">testament</a>) { <font class="comment">// if we want module heading</font>
+01276 offset = 0;
+01277 verse = 0;
+01278 }
+01279 <font class="keywordflow">else</font> {
+01280 <font class="keywordflow">if</font> (!book)
+01281 chapter = 0;
+01282 <font class="keywordflow">if</font> (!chapter)
+01283 verse = 0;
+01284
+01285 offset = offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0][book];
+01286 offset = offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][(int)offset + chapter];
+01287 <font class="keywordflow">if</font> (!(offset|verse)) <font class="comment">// if we have a testament but nothing else.</font>
+01288 offset = 1;
+01289 }
+01290 <font class="keywordflow">return</font> (offset + verse);
+01291 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a7" doxytag="VerseKey::LowerBound"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey &amp; VerseKey::LowerBound </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+gets the lower boundary of this VerseKey.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+the lower boundary of this VerseKey </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00761">761</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>(), <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), and <a class="el" href="versekey_8cpp-source.html#l00111">VerseKey</a>().
+<p>
+<div class="fragment"><pre>00762 {
+00763 <font class="keywordflow">if</font> (!lowerBound)
+00764 initBounds();
+00765
+00766 <font class="keywordflow">return</font> (*lowerBound);
+00767 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a5" doxytag="VerseKey::LowerBound"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey &amp; VerseKey::LowerBound </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>lb</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+sets the lower boundary for this VerseKey and returns the new boundary.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>lb</em>&nbsp;</td><td>
+the new lower boundary for this VerseKey </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+the lower boundary the key was set to </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00705">705</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
+<p>
+<div class="fragment"><pre>00706 {
+00707 <font class="keywordflow">if</font> (!lowerBound)
+00708 initBounds();
+00709
+00710 (*lowerBound) = lb;
+00711 lowerBound-&gt;<a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00712
+00713 <font class="keywordflow">return</font> (*lowerBound);
+00714 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a30" doxytag="VerseKey::Normalize"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void VerseKey::Normalize </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>autocheck</em> = 0 </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+checks limits and normalizes if necessary (e.g.
+<p>
+Matthew 29:47 = Mark 2:2). If last verse is exceeded, key is set to last Book CH:VS
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00963">963</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8h-source.html#l00121">autonorm</a>, <a class="el" href="versekey_8h-source.html#l00124">headings</a>, <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8h-source.html#l00115">testament</a>, and <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>().
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01203">AutoNormalize</a>(), <a class="el" href="versekey_8cpp-source.html#l01137">Book</a>(), <a class="el" href="versekey_8cpp-source.html#l01159">Chapter</a>(), <a class="el" href="versekey_8cpp-source.html#l01226">Headings</a>(), <a class="el" href="versekey_8cpp-source.html#l00705">LowerBound</a>(), <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), <a class="el" href="versekey_8cpp-source.html#l01115">Testament</a>(), <a class="el" href="versekey_8cpp-source.html#l00721">UpperBound</a>(), and <a class="el" href="versekey_8cpp-source.html#l01181">Verse</a>().
+<p>
+<div class="fragment"><pre>00964 {
+00965 error = 0;
+00966
+00967 <font class="keywordflow">if</font> ((autocheck) &amp;&amp; (!<a class="code" href="class_verse_key.html#o8">autonorm</a>)) <font class="comment">// only normalize if we were explicitely called or if autonorm is turned on</font>
+00968 <font class="keywordflow">return</font>;
+00969
+00970 <font class="keywordflow">if</font> ((headings) &amp;&amp; (!verse)) <font class="comment">// this is cheeze and temporary until deciding what actions should be taken.</font>
+00971 <font class="keywordflow">return</font>; <font class="comment">// so headings should only be turned on when positioning with Index() or incrementors</font>
+00972
+00973 <font class="keywordflow">while</font> ((testament &lt; 3) &amp;&amp; (testament &gt; 0)) {
+00974
+00975 <font class="keywordflow">if</font> (book &gt; BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]) {
+00976 book -= BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
+00977 <a class="code" href="class_verse_key.html#o4">testament</a>++;
+00978 <font class="keywordflow">continue</font>;
+00979 }
+00980
+00981 <font class="keywordflow">if</font> (book &lt; 1) {
+00982 <font class="keywordflow">if</font> (--<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 0) {
+00983 book += BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
+00984 }
+00985 <font class="keywordflow">continue</font>;
+00986 }
+00987
+00988 <font class="keywordflow">if</font> (chapter &gt; books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax) {
+00989 chapter -= books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+00990 book++;
+00991 <font class="keywordflow">continue</font>;
+00992 }
+00993
+00994 <font class="keywordflow">if</font> (chapter &lt; 1) {
+00995 <font class="keywordflow">if</font> (--book &gt; 0) {
+00996 chapter += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+00997 }
+00998 <font class="keywordflow">else</font> {
+00999 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 1) {
+01000 chapter += books[0][BMAX[0]-1].chapmax;
+01001 }
+01002 }
+01003 <font class="keywordflow">continue</font>;
+01004 }
+01005
+01006 <font class="keywordflow">if</font> (verse &gt; books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1]) { <font class="comment">// -1 because e.g chapter 1 of Matthew is books[1][0].versemax[0]</font>
+01007 verse -= books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter++ - 1];
+01008 <font class="keywordflow">continue</font>;
+01009 }
+01010
+01011 <font class="keywordflow">if</font> (verse &lt; 1) {
+01012 <font class="keywordflow">if</font> (--chapter &gt; 0) {
+01013 verse += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+01014 }
+01015 <font class="keywordflow">else</font> {
+01016 <font class="keywordflow">if</font> (book &gt; 1) {
+01017 verse += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-2].versemax[books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-2].chapmax-1];
+01018 }
+01019 <font class="keywordflow">else</font> {
+01020 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 1) {
+01021 verse += books[0][BMAX[0]-1].versemax[books[0][BMAX[0]-1].chapmax-1];
+01022 }
+01023 }
+01024 }
+01025 <font class="keywordflow">continue</font>;
+01026 }
+01027
+01028 <font class="keywordflow">break</font>; <font class="comment">// If we've made it this far (all failure checks continue) we're ok</font>
+01029 }
+01030
+01031 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 2) {
+01032 <a class="code" href="class_verse_key.html#o4">testament</a> = 2;
+01033 book = BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
+01034 chapter = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+01035 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+01036 error = KEYERR_OUTOFBOUNDS;
+01037 }
+01038
+01039 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 1) {
+01040 error = ((!<a class="code" href="class_verse_key.html#o9">headings</a>) || (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 0) || (book &lt; 0)) ? KEYERR_OUTOFBOUNDS : 0;
+01041 <a class="code" href="class_verse_key.html#o4">testament</a> = ((headings) ? 0 : 1);
+01042 book = ((headings) ? 0 : 1);
+01043 chapter = ((headings) ? 0 : 1);
+01044 verse = ((headings) ? 0 : 1);
+01045 }
+01046 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a8">UpperBound</a>()) &gt; 0) {
+01047 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>();
+01048 error = KEYERR_OUTOFBOUNDS;
+01049 }
+01050 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a7">LowerBound</a>()) &lt; 0) {
+01051 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>();
+01052 error = KEYERR_OUTOFBOUNDS;
+01053 }
+01054 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a16" doxytag="VerseKey::setPosition"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void VerseKey::setPosition </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">SW_POSITION&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Positions this key.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>p</em>&nbsp;</td><td>
+position </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+*this </dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00884">884</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l01075">Book</a>(), <a class="el" href="versekey_8cpp-source.html#l01087">Chapter</a>(), <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), <a class="el" href="versekey_8cpp-source.html#l01063">Testament</a>(), <a class="el" href="versekey_8h-source.html#l00115">testament</a>, <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>(), and <a class="el" href="versekey_8cpp-source.html#l01099">Verse</a>().
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l00111">VerseKey</a>().
+<p>
+<div class="fragment"><pre>00884 {
+00885 <font class="keywordflow">switch</font> (p) {
+00886 <font class="keywordflow">case</font> POS_TOP:
+00887 <a class="code" href="class_verse_key.html#o4">testament</a> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00888 book = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a23">Book</a>();
+00889 chapter = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00890 verse = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00891 <font class="keywordflow">break</font>;
+00892 <font class="keywordflow">case</font> POS_BOTTOM:
+00893 <a class="code" href="class_verse_key.html#o4">testament</a> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00894 book = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a23">Book</a>();
+00895 chapter = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00896 verse = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00897 <font class="keywordflow">break</font>;
+00898 <font class="keywordflow">case</font> POS_MAXVERSE:
+00899 <a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00900 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+00901 <font class="keywordflow">break</font>;
+00902 <font class="keywordflow">case</font> POS_MAXCHAPTER:
+00903 verse = 1;
+00904 <a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00905 chapter = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+00906 <font class="keywordflow">break</font>;
+00907 }
+00908 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+00909 <a class="code" href="class_s_w_key.html#a6">Error</a>(); <font class="comment">// clear error from normalize</font>
+00910 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a13" doxytag="VerseKey::setText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void VerseKey::setText </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ikey</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>ikey</em>&nbsp;</td><td>
+string to set this key to </td></tr>
+</table>
+</dl>
+<p>
+Reimplemented from <a class="el" href="class_s_w_key.html#a7">SWKey</a>.
+<p>
+Definition at line <a class="el" href="versekey_8h-source.html#l00236">236</a> of file <a class="el" href="versekey_8h-source.html">versekey.h</a>.
+<p>
+References <a class="el" href="swkey_8cpp-source.html#l00115">SWKey::setText</a>().
+<p>
+<div class="fragment"><pre>00236 { <a class="code" href="class_s_w_key.html#a7">SWKey::setText</a>(ikey); <a class="code" href="class_verse_key.html#c5">parse</a> (); }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a26" doxytag="VerseKey::Testament"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char VerseKey::Testament </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>itestament</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets testament.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>itestament</em>&nbsp;</td><td>
+value which to set testament [MAXPOS(char)] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+if unchanged -&gt; value of testament, if changed -&gt; previous value of testament </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01115">1115</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), and <a class="el" href="versekey_8h-source.html#l00115">testament</a>.
+<p>
+<div class="fragment"><pre>01116 {
+01117 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o4">testament</a>;
+01118
+01119 <font class="keywordflow">if</font> (itestament != MAXPOS(<font class="keywordtype">char</font>)) {
+01120 <a class="code" href="class_verse_key.html#o4">testament</a> = itestament;
+01121 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01122 }
+01123 <font class="keywordflow">return</font> retval;
+01124 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a22" doxytag="VerseKey::Testament"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char VerseKey::Testament </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets testament.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+value of testament </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01063">1063</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8h-source.html#l00115">testament</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
+<p>
+<div class="fragment"><pre>01064 {
+01065 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#o4">testament</a>;
+01066 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a8" doxytag="VerseKey::UpperBound"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey &amp; VerseKey::UpperBound </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+gets the upper boundary of this VerseKey.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+the upper boundary of this VerseKey </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00774">774</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>(), <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), and <a class="el" href="versekey_8cpp-source.html#l00111">VerseKey</a>().
+<p>
+<div class="fragment"><pre>00775 {
+00776 <font class="keywordflow">if</font> (!upperBound)
+00777 initBounds();
+00778
+00779 <font class="keywordflow">return</font> (*upperBound);
+00780 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a6" doxytag="VerseKey::UpperBound"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> VerseKey &amp; VerseKey::UpperBound </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>ub</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+sets the upper boundary for this VerseKey and returns the new boundary.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>lb</em>&nbsp;</td><td>
+the new upper boundary for this VerseKey </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+the upper boundary the key was set to </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l00721">721</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
+<p>
+<div class="fragment"><pre>00722 {
+00723 <font class="keywordflow">if</font> (!upperBound)
+00724 initBounds();
+00725
+00726 <font class="comment">// need to set upperbound parsing to resolve to max verse/chap if not specified</font>
+00727 (*upperBound) = ub;
+00728 <font class="keywordflow">if</font> (*upperBound &lt; *lowerBound)
+00729 *upperBound = *lowerBound;
+00730 upperBound-&gt;<a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00731
+00732 <font class="comment">// until we have a proper method to resolve max verse/chap use this kludge</font>
+00733 <font class="keywordtype">int</font> len = strlen(ub);
+00734 <font class="keywordtype">bool</font> alpha = <font class="keyword">false</font>;
+00735 <font class="keywordtype">bool</font> versespec = <font class="keyword">false</font>;
+00736 <font class="keywordtype">bool</font> chapspec = <font class="keyword">false</font>;
+00737 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; len; i++) {
+00738 <font class="keywordflow">if</font> (isalpha(ub[i]))
+00739 alpha = <font class="keyword">true</font>;
+00740 <font class="keywordflow">if</font> (ub[i] == <font class="charliteral">':'</font>) <font class="comment">// if we have a : we assume verse spec</font>
+00741 versespec = <font class="keyword">true</font>;
+00742 <font class="keywordflow">if</font> ((isdigit(ub[i])) &amp;&amp; (alpha)) <font class="comment">// if digit after alpha assume chap spec</font>
+00743 chapspec = <font class="keyword">true</font>;
+00744 }
+00745 <font class="keywordflow">if</font> (!chapspec)
+00746 *upperBound = MAXCHAPTER;
+00747 <font class="keywordflow">if</font> (!versespec)
+00748 *upperBound = MAXVERSE;
+00749
+00750
+00751 <font class="comment">// -- end kludge</font>
+00752
+00753 <font class="keywordflow">return</font> (*upperBound);
+00754 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a29" doxytag="VerseKey::Verse"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int VerseKey::Verse </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; <em>iverse</em> </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Sets/gets verse.
+<p>
+<dl compact><dt><b>
+Parameters: </b><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em>iverse</em>&nbsp;</td><td>
+value which to set verse [MAXPOS(int)] - only get </td></tr>
+</table>
+</dl><dl compact><dt><b>
+Returns: </b><dd>
+if unchanged -&gt; value of verse, if changed -&gt; previous value of verse </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01181">1181</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
+<p>
+<div class="fragment"><pre>01182 {
+01183 <font class="keywordtype">int</font> retval = verse;
+01184
+01185 verse = iverse;
+01186 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01187
+01188 <font class="keywordflow">return</font> retval;
+01189 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a25" doxytag="VerseKey::Verse"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int VerseKey::Verse </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap>&nbsp; </td>
+ <td class="md" valign="top">)&nbsp;</td>
+ <td class="md" nowrap> const<code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Gets verse.
+<p>
+<dl compact><dt><b>
+Returns: </b><dd>
+value of verse </dl>
+<p>
+Definition at line <a class="el" href="versekey_8cpp-source.html#l01099">1099</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
+<p>
+Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01159">Chapter</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
+<p>
+<div class="fragment"><pre>01100 {
+01101 <font class="keywordflow">return</font> verse;
+01102 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="versekey_8h-source.html">versekey.h</a><li><a class="el" href="versekey_8cpp-source.html">versekey.cpp</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/class_verse_key__coll__graph.png b/doc/api-documentation/html/class_verse_key__coll__graph.png
new file mode 100644
index 0000000..67bab40
--- /dev/null
+++ b/doc/api-documentation/html/class_verse_key__coll__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/class_verse_key__inherit__graph.png b/doc/api-documentation/html/class_verse_key__inherit__graph.png
new file mode 100644
index 0000000..be782c6
--- /dev/null
+++ b/doc/api-documentation/html/class_verse_key__inherit__graph.png
Binary files differ
diff --git a/doc/api-documentation/html/classes.html b/doc/api-documentation/html/classes.html
new file mode 100644
index 0000000..38b32af
--- /dev/null
+++ b/doc/api-documentation/html/classes.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Alphabetical index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project Compound Index</h1><table align=center width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;E&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_str_key.html">StrKey</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_tree_key.html">TreeKey</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_list_key.html">ListKey</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_class.html">SWClass</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_locale_mgr.html">LocaleMgr</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_com.html">SWCom</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;U&nbsp;&nbsp;</td></tr></table></td></tr>
+<tr><td><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;M&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_s_w_config.html">SWConfig</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_display.html">SWDisplay</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_s_w_gen_book.html">SWGenBook</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_morph.html">GBFMorph</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_input_method.html">SWInputMethod</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_key.html">SWKey</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_plain.html">GBFPlain</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_s_w_l_d.html">SWLD</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_locale.html">SWLocale</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_plain.html">ThMLPlain</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_mgr.html">SWMgr</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_r_t_f.html">ThMLRTF</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_module.html">SWModule</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</td></tr></table></td></tr>
+<tr><td><a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_s_w_object.html">SWObject</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_verse_key.html">VerseKey</a>&nbsp;&nbsp;&nbsp;</td></tr>
+<tr><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</td></tr></table></td><td><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_s_w_text.html">SWText</a>&nbsp;&nbsp;&nbsp;</td></tr>
+</table>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/comments_2rawcom_2rtfidx_8cpp-source.html b/doc/api-documentation/html/comments_2rawcom_2rtfidx_8cpp-source.html
new file mode 100644
index 0000000..beafd01
--- /dev/null
+++ b/doc/api-documentation/html/comments_2rawcom_2rtfidx_8cpp-source.html
@@ -0,0 +1,306 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rtfidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rtfidx.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * This code wreaks but works (at least for MHC). Good luck!</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00019
+00020
+00021 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00022 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size);
+00023 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname);
+00024 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00025
+00026
+00027 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00028 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00029 <font class="keywordtype">long</font> chapoffset;
+00030 <font class="keywordtype">short</font> chapsize;
+00031 <font class="keywordtype">char</font> testmnt;
+00032
+00033
+00034 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00035 {
+00036 <font class="keywordtype">long</font> pos, offset;
+00037 <font class="keywordtype">int</font> num1, num2, rangemax, curbook = 0, curchap = 0, curverse = 0;
+00038 <font class="keywordtype">char</font> buf[127], startflag = 0;
+00039 <font class="keywordtype">short</font> size, tmp;
+00040
+00041 checkparams(argc, argv);
+00042
+00043 openfiles(argv[1]);
+00044
+00045 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00046 pos = 0;
+00047 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00048 pos = 4;
+00049 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00050
+00051
+00052 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00053 pos = 0;
+00054 size = 0;
+00055 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00056 write(vfp, &amp;size, 2);
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059
+00060 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00061 <font class="keywordflow">if</font> (num2) {
+00062 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00063 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00064 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(num2);
+00065 }
+00066 <font class="keywordflow">else</font> {
+00067 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00068 <font class="keywordflow">if</font> (!startflag) {
+00069 startflag = 1;
+00070 }
+00071 <font class="keywordflow">else</font> {
+00072 <font class="keywordflow">if</font> (num1 &lt;= key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>()) { <font class="comment">// new book</font>
+00073 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00074 key2.<a class="code" href="class_verse_key.html#a23">Book</a>(key2.<a class="code" href="class_verse_key.html#a23">Book</a>()+1);
+00075 }
+00076 }
+00077 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00078 printf(<font class="stringliteral">"Found Chapter Break: %d ('%s')\n"</font>, num1, (<font class="keywordtype">char</font> *)key2);
+00079 chapoffset = offset;
+00080 chapsize = size;
+00081 <font class="keywordflow">continue</font>;
+00082 }
+00083
+00084 key3 = key2;
+00085 key3 += (rangemax - key3.<a class="code" href="class_verse_key.html#a25">Verse</a>());
+00086
+00087 writeidx(key1, key2, key3, offset, size);
+00088 }
+00089 close(vfp);
+00090 close(cfp);
+00091 close(bfp);
+00092 close(fp);
+00093 }
+00094
+00095
+00096 <font class="comment">/**************************************************************************</font>
+00097 <font class="comment"> * ENT: key1 - current location of index</font>
+00098 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00099 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00100 <font class="comment"> */</font>
+00101
+00102 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00103 {
+00104 <font class="keywordtype">long</font> pos;
+00105 <font class="keywordtype">short</font> tmp;
+00106
+00107 <font class="keywordflow">for</font> (; ((key1 &lt;= key3) &amp;&amp; (key1.<a class="code" href="class_s_w_key.html#a6">Error</a>() != KEYERR_OUTOFBOUNDS) &amp;&amp; (key1.<a class="code" href="class_verse_key.html#a22">Testament</a>() == testmnt)); key1+=1) {
+00108 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00109 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00110 pos = lseek(cfp, 0, SEEK_CUR);
+00111 write(bfp, &amp;pos, 4);
+00112 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00113 write(cfp, &amp;pos, 4);
+00114 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Book intro (vss) set to same as chap for now(it should be chap 1 which usually contains the book into anyway)*/</font>
+00115 write(vfp, &amp;chapsize, 2);
+00116 }
+00117 pos = lseek(vfp, 0, SEEK_CUR);
+00118 write(cfp, &amp;pos, 4);
+00119 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00120 write(vfp, &amp;chapsize, 2);
+00121 }
+00122 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00123 write(vfp, &amp;offset, 4);
+00124 write(vfp, &amp;size, 2);
+00125 }
+00126 <font class="keywordflow">else</font> {
+00127 pos = 0;
+00128 tmp = 0;
+00129 write(vfp, &amp;pos, 4);
+00130 write(vfp, &amp;tmp, 2);
+00131 }
+00132 }
+00133 }
+00134
+00135
+00136 <font class="keywordtype">char</font> startentry(<font class="keywordtype">char</font> *buf)
+00137 {
+00138 <font class="keywordtype">char</font> loop;
+00139
+00140 <font class="keywordflow">if</font> (buf[0] != 10)
+00141 <font class="keywordflow">return</font> 0;
+00142 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'#'</font>)
+00143 <font class="keywordflow">return</font> 0;
+00144 <font class="keywordflow">if</font> (!isdigit(buf[2]))
+00145 <font class="keywordflow">return</font> 0;
+00146 <font class="keywordflow">for</font> (loop = 3; loop &lt; 7; loop++) {
+00147 <font class="keywordflow">if</font> (buf[loop] == <font class="charliteral">' '</font>)
+00148 <font class="keywordflow">break</font>;
+00149 <font class="keywordflow">if</font> ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != <font class="charliteral">','</font>) &amp;&amp; (buf[loop] != <font class="charliteral">'-'</font>))
+00150 <font class="keywordflow">return</font> 0;
+00151 }
+00152 <font class="keywordflow">return</font> 1;
+00153 }
+00154
+00155
+00156 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size)
+00157 {
+00158 <font class="keywordtype">char</font> buf[7];
+00159 <font class="keywordtype">char</font> buf2[20];
+00160 <font class="keywordtype">char</font> ch;
+00161 <font class="keywordtype">char</font> loop;
+00162 <font class="keywordtype">long</font> offset2;
+00163 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00164
+00165 memset(buf, <font class="charliteral">' '</font>, 7);
+00166
+00167 <font class="keywordflow">while</font> (1) {
+00168 <font class="keywordflow">if</font> (startentry(buf)) {
+00169 memset(buf, <font class="charliteral">' '</font>, 2);
+00170 <font class="keywordflow">for</font> (loop = 2; loop &lt; 7; loop++) {
+00171 <font class="keywordflow">if</font> ((buf[loop] == <font class="charliteral">'-'</font>) || (buf[loop] == <font class="charliteral">','</font>) || (buf[loop] == <font class="charliteral">' '</font>)) {
+00172 buf[loop] = 0;
+00173 *num2 = atoi(buf);
+00174 <font class="keywordflow">break</font>;
+00175 }
+00176 }
+00177 <font class="keywordflow">for</font> (ch = loop + 1; ch &lt; 7; ch++) {
+00178 <font class="keywordflow">if</font> (buf[ch] == <font class="charliteral">' '</font>) {
+00179 <font class="keywordflow">break</font>;
+00180 }
+00181 }
+00182 buf[ch] = 0;
+00183 *rangemax = atoi(&amp;buf[loop+1]);
+00184 <font class="keywordflow">if</font> (!*rangemax)
+00185 *rangemax = *num2;
+00186 *offset = lseek(fp, 0, SEEK_CUR) - 5;
+00187 <font class="keywordflow">if</font> (size) {
+00188 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00189 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00190 }
+00191 <font class="keywordflow">else</font> {
+00192 <font class="keywordflow">if</font> (vs2) {
+00193 *size = (offset2 - (*offset)) - 3;
+00194 }
+00195 <font class="keywordflow">else</font> {
+00196 sprintf(buf2, <font class="stringliteral">"$-$-$- XX:%d"</font>, ch2);
+00197 *size = (offset2 - (*offset)) - ((strlen(buf2) + 4));
+00198 }
+00199 }
+00200 lseek(fp, *offset, SEEK_SET);
+00201 }
+00202 <font class="keywordflow">return</font> 0;
+00203 }
+00204
+00205 <font class="keywordflow">if</font> (!strncmp(buf, <font class="stringliteral">"$-$-$-"</font>, 6)) {
+00206 memset(buf2, 0, 7);
+00207 loop = 0;
+00208 <font class="keywordflow">while</font> ((read(fp, &amp;buf2[loop], 1) == 1) &amp;&amp; (loop &lt; 7)) {
+00209 <font class="keywordflow">if</font> ((buf2[loop] == 10) || (buf2[loop] == 13)) {
+00210 buf2[loop] = 0;
+00211 <font class="keywordflow">break</font>;
+00212 }
+00213 loop++;
+00214 }
+00215 <font class="keywordflow">while</font> (read(fp, &amp;ch, 1) == 1) {
+00216 <font class="keywordflow">if</font> (ch == <font class="charliteral">'*'</font>)
+00217 <font class="keywordflow">break</font>;
+00218 }
+00219
+00220 *offset = lseek(fp, 0, SEEK_CUR) - 1;
+00221 *num2 = 0;
+00222 <font class="keywordflow">for</font> (loop = strlen(buf2) - 1; loop; loop--) {
+00223 <font class="keywordflow">if</font> (buf2[loop] == <font class="charliteral">':'</font>)
+00224 <font class="keywordflow">break</font>;
+00225 }
+00226 *num1 = atoi(&amp;buf2[loop+1]);
+00227 printf(<font class="stringliteral">"Chapter marker: %s\n"</font>, buf2);
+00228 <font class="keywordflow">if</font> (size) {
+00229 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00230 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00231 }
+00232 <font class="keywordflow">else</font> {
+00233 <font class="keywordflow">if</font> (vs2) {
+00234 *size = (offset2 - (*offset)) - 3;
+00235 }
+00236 <font class="keywordflow">else</font> {
+00237 sprintf(buf2, <font class="stringliteral">"$-$-$- XX:%d"</font>, ch2);
+00238 *size = (offset2 - (*offset)) - ((strlen(buf2) + 4));
+00239 }
+00240 }
+00241 lseek(fp, *offset, SEEK_SET);
+00242 }
+00243 <font class="keywordflow">return</font> 0;
+00244 }
+00245
+00246
+00247 memmove(buf, &amp;buf[1], 6);
+00248 <font class="keywordflow">if</font> (read(fp, &amp;buf[6], 1) != 1)
+00249 <font class="keywordflow">return</font> 1;
+00250 }
+00251 }
+00252
+00253
+00254 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname)
+00255 {
+00256 <font class="keywordtype">char</font> buf[255];
+00257
+00258 <font class="keywordflow">if</font> ((fp = open(fname, O_RDONLY)) == -1) {
+00259 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00260 exit(1);
+00261 }
+00262
+00263 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00264 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00265 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00266 exit(1);
+00267 }
+00268
+00269 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00270 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00271 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00272 exit(1);
+00273 }
+00274
+00275 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00276 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00277 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00278 exit(1);
+00279 }
+00280 }
+00281
+00282
+00283 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00284 {
+00285 <font class="keywordflow">if</font> (argc &lt; 2) {
+00286 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt - for new testmt file]\n"</font>, argv[0]);
+00287 exit(1);
+00288 }
+00289 <font class="keywordflow">if</font> (argc == 3)
+00290 key1 = key2 = key3 = <font class="stringliteral">"Matthew 1:1"</font>;
+00291 <font class="keywordflow">else</font> key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00292 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/comments_2zcom_2rawtxt2z_8cpp-source.html b/doc/api-documentation/html/comments_2zcom_2rawtxt2z_8cpp-source.html
new file mode 100644
index 0000000..00c50fe
--- /dev/null
+++ b/doc/api-documentation/html/comments_2zcom_2rawtxt2z_8cpp-source.html
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawtxt2z.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawtxt2z.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00003 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00004 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00005 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00006
+00007 <font class="preprocessor">#ifndef __GNUC__</font>
+00008 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00009 <font class="preprocessor">#else</font>
+00010 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00011 <font class="preprocessor">#endif</font>
+00012 <font class="preprocessor"></font>
+00013 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00014
+00015
+00016 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00017 {
+00018 SWCompress *zobj;
+00019 <font class="keywordtype">int</font> ifd, ofd, ixfd, oxfd;
+00020 <font class="keywordtype">long</font> offset, loffset, lzoffset;
+00021 <font class="keywordtype">short</font> size, lsize, lzsize;
+00022 <font class="keywordtype">char</font> *tmpbuf;
+00023
+00024 <font class="keywordflow">if</font> (argc != 2) {
+00025 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;datafilename&gt;\n"</font>, argv[0]);
+00026 exit(1);
+00027 }
+00028
+00029 zobj = <font class="keyword">new</font> SWCompress();
+00030
+00031 <font class="preprocessor">#ifndef O_BINARY</font>
+00032 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0</font>
+00033 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00034 <font class="preprocessor"></font>
+00035 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(argv[1]) + 9 ];
+00036 ifd = open(argv[1], O_RDONLY|O_BINARY);
+00037 sprintf(tmpbuf, <font class="stringliteral">"%s.vss"</font>, argv[1]);
+00038 ixfd = open(tmpbuf, O_RDONLY|O_BINARY);
+00039 sprintf(tmpbuf, <font class="stringliteral">"%s.zzz"</font>, argv[1]);
+00040 ofd = open(tmpbuf, O_WRONLY|O_BINARY|O_CREAT);
+00041 sprintf(tmpbuf, <font class="stringliteral">"%s.zzz.vss"</font>, argv[1]);
+00042 oxfd = open(tmpbuf, O_WRONLY|O_BINARY|O_CREAT);
+00043
+00044 <font class="keyword">delete</font> [] tmpbuf;
+00045
+00046 printf(<font class="stringliteral">"\n"</font>);
+00047
+00048 <font class="keywordflow">while</font> (1) {
+00049 <font class="keywordflow">if</font> (read(ixfd, &amp;offset, 4) != 4)
+00050 <font class="keywordflow">break</font>;
+00051 <font class="keywordflow">if</font> (read(ixfd, &amp;size, 2) != 2)
+00052 <font class="keywordflow">break</font>;
+00053
+00054 <font class="keywordflow">if</font> ((offset == loffset) &amp;&amp; (size == lsize)) {
+00055 printf(<font class="stringliteral">"using previous offset,size\n"</font>, size);
+00056 write(oxfd, &amp;lzoffset, 4);
+00057 write(oxfd, &amp;lzsize, 2);
+00058 }
+00059 <font class="keywordflow">else</font> {
+00060 printf(<font class="stringliteral">"%d -&gt; "</font>, size);
+00061 lsize = size;
+00062 loffset = offset;
+00063
+00064 <font class="keywordflow">if</font> (size) {
+00065 tmpbuf = (<font class="keywordtype">char</font> *) calloc(size + 1, 1);
+00066 lseek(ifd, offset, SEEK_SET);
+00067 read(ifd, tmpbuf, size);
+00068 zobj-&gt;Buf(tmpbuf);
+00069 zobj-&gt;zBuf(&amp;size);
+00070 free(tmpbuf);
+00071 }
+00072 offset = lseek(ofd, 0, SEEK_END);
+00073 write(oxfd, &amp;offset, 4);
+00074 <font class="keywordflow">if</font> (size)
+00075 write(ofd, zobj-&gt;zBuf(&amp;size), size);
+00076 lzoffset = offset;
+00077 write(oxfd, &amp;size, 2);
+00078 lzsize = size;
+00079 printf(<font class="stringliteral">"%d \n"</font>, size);
+00080 }
+00081 }
+00082 <font class="keyword">delete</font> zobj;
+00083 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/compress_8cpp-source.html b/doc/api-documentation/html/compress_8cpp-source.html
new file mode 100644
index 0000000..bd80d69
--- /dev/null
+++ b/doc/api-documentation/html/compress_8cpp-source.html
@@ -0,0 +1,781 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>compress.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>compress.cpp</h1><div class="fragment"><pre>00001 Compression Info, 10-11-95
+00002 Jeff Wheeler
+00003
+00004 Source of Algorithm
+00005 -------------------
+00006
+00007 The compression algorithms used here are based upon the algorithms developed and published by Haruhiko Okumura in a paper entitled <font class="stringliteral">"Data Compression Algorithms of LARC and LHarc."</font> This paper discusses three compression algorithms, LSZZ, LZARI, and LZHUF. LZSS is described as the <font class="stringliteral">"first"</font> of these, and is described as providing moderate compression with good speed. LZARI is described as an improved LZSS, a combination of the LZSS algorithm with adaptive arithmetic compression. It is described as being slower than LZSS but with better compression. LZHUF (the basis of the common LHA compression program) was included in the paper, however, a free usage license was not included.
+00008
+00009 The following are copies of the statements included at the beginning of each source code listing that was supplied in the working paper.
+00010
+00011 LZSS, dated 4/6/89, marked as <font class="stringliteral">"Use, distribute and</font>
+00012 <font class="stringliteral"> modify this program freely."</font>
+00013
+00014 LZARI, dated 4/7/89, marked as <font class="stringliteral">"Use, distribute and</font>
+00015 <font class="stringliteral"> modify this program freely."</font>
+00016
+00017 LZHUF, dated 11/20/88, written by Haruyasu Yoshizaki,
+00018 translated by Haruhiko Okumura on 4/7/89. Not
+00019 expressly marked as redistributable or modifiable.
+00020
+00021 Since both LZSS and LZARI are marked as <font class="stringliteral">"use, distribute and modify freely"</font> we have felt at liberty basing our compression algorithm on either of these.
+00022
+00023 Selection of Algorithm
+00024 ----------------------
+00025
+00026 Working samples of three possible compression algorithms are supplied in Okumura's paper. Which should be used?
+00027
+00028 LZSS is the fastest at decompression, but does not generated as small a compressed file as the other methods. The other two methods provided, perhaps, a 15% improvement in compression. Or, put another way, on a 100K file, LZSS might compress it to 50K <font class="keywordflow">while</font> the others might approach 40-45K. For STEP purposes, it was decided that decoding speed was of more importance than tighter compression. For these reasons, the first compression algorithm implemented is the LZSS algorithm.
+00029
+00030 About LZSS Encoding
+00031 -------------------
+00032
+00033 (adapted from Haruhiko Okumura's paper)
+00034
+00035 This scheme was proposed by Ziv and Lempel [1]. A slightly modified version is described by Storer and Szymanski [2]. An implementation <font class="keyword">using</font> a binary tree has been proposed by Bell [3].
+00036
+00037 The algorithm is quite simple.
+00038 1. Keep a ring buffer which initially contains all space characters.
+00039 2. Read several letters from the file to the buffer.
+00040 3. Search the buffer <font class="keywordflow">for</font> the longest string that matches the letters just read, and send its length and position into the buffer.
+00041
+00042 If the ring buffer is 4096 bytes, the position can be stored in 12 bits. If the length is represented in 4 bits, the &lt;position, length&gt; pair is two bytes <font class="keywordtype">long</font>. If the longest match is no more than two characters, then just one character is sent without encoding. The process starts again with the next character. An extra bit is sent each time to tell the decoder whether the next item is a character of a &lt;position, length&gt; pair.
+00043
+00044 [1] J. Ziv and A. Lempel, IEEE Transactions IT-23, 337-343 (1977).
+00045 [2] J. A. Storer and T. G. Szymanski, J. ACM, 29, 928-951 (1982).
+00046 [3] T.C. Gell, IEEE Transactions COM-34, 1176-1182 (1986).
+00047
+00048 void InitTree( <font class="comment">// no return value</font>
+00049 <font class="keywordtype">void</font>); <font class="comment">// no parameters</font>
+00050
+00051 <font class="keywordtype">void</font> InsertNode( <font class="comment">// no return value</font>
+00052 <font class="keywordtype">short</font> <font class="keywordtype">int</font> Pos); <font class="comment">// position in the buffer</font>
+00053
+00054 <font class="keywordtype">void</font> DeleteNode( <font class="comment">// no return value</font>
+00055 <font class="keywordtype">short</font> <font class="keywordtype">int</font> Node); <font class="comment">// node to be removed</font>
+00056
+00057 <font class="keywordtype">void</font> Encode( <font class="comment">// no return value</font>
+00058 <font class="keywordtype">void</font>); <font class="comment">// no parameters</font>
+00059
+00060 <font class="keywordtype">void</font> Decode( <font class="comment">// no return value</font>
+00061 <font class="keywordtype">void</font>); <font class="comment">// no parameters</font>
+00062
+00063 <font class="comment">// The following are constant sizes used by the compression algorithm.</font>
+00064 <font class="comment">//</font>
+00065 <font class="comment">// N - This is the size of the ring buffer. It is set</font>
+00066 <font class="comment">// to 4K. It is important to note that a position</font>
+00067 <font class="comment">// within the ring buffer requires 12 bits. </font>
+00068 <font class="comment">//</font>
+00069 <font class="comment">// F - This is the maximum length of a character sequence</font>
+00070 <font class="comment">// that can be taken from the ring buffer. It is set</font>
+00071 <font class="comment">// to 18. Note that a length must be 3 before it is</font>
+00072 <font class="comment">// worthwhile to store a position/length pair, so the</font>
+00073 <font class="comment">// length can be encoded in only 4 bits. Or, put yet</font>
+00074 <font class="comment">// another way, it is not necessary to encode a length</font>
+00075 <font class="comment">// of 0-18, it is necessary to encode a length of</font>
+00076 <font class="comment">// 3-18, which requires 4 bits.</font>
+00077 <font class="comment">// </font>
+00078 <font class="comment">// THRESHOLD - It takes 2 bytes to store an offset and</font>
+00079 <font class="comment">// a length. If a character sequence only</font>
+00080 <font class="comment">// requires 1 or 2 characters to store </font>
+00081 <font class="comment">// uncompressed, then it is better to store</font>
+00082 <font class="comment">// it uncompressed than as an offset into</font>
+00083 <font class="comment">// the ring buffer.</font>
+00084 <font class="comment">//</font>
+00085 <font class="comment">// Note that the 12 bits used to store the position and the 4 bits</font>
+00086 <font class="comment">// used to store the length equal a total of 16 bits, or 2 bytes.</font>
+00087
+00088 <font class="preprocessor">#define N 4096</font>
+00089 <font class="preprocessor"></font><font class="preprocessor">#define F 18</font>
+00090 <font class="preprocessor"></font><font class="preprocessor">#define THRESHOLD 3</font>
+00091 <font class="preprocessor"></font><font class="preprocessor">#define NOT_USED N</font>
+00092 <font class="preprocessor"></font>
+00093 <font class="comment">// m_ring_buffer is a text buffer. It contains "nodes" of</font>
+00094 <font class="comment">// uncompressed text that can be indexed by position. That is,</font>
+00095 <font class="comment">// a substring of the ring buffer can be indexed by a position</font>
+00096 <font class="comment">// and a length. When decoding, the compressed text may contain</font>
+00097 <font class="comment">// a position in the ring buffer and a count of the number of</font>
+00098 <font class="comment">// bytes from the ring buffer that are to be moved into the</font>
+00099 <font class="comment">// uncompressed buffer. </font>
+00100 <font class="comment">//</font>
+00101 <font class="comment">// This ring buffer is not maintained as part of the compressed</font>
+00102 <font class="comment">// text. Instead, it is reconstructed dynamically. That is,</font>
+00103 <font class="comment">// it starts out empty and gets built as the text is decompressed.</font>
+00104 <font class="comment">//</font>
+00105 <font class="comment">// The ring buffer contain N bytes, with an additional F - 1 bytes</font>
+00106 <font class="comment">// to facilitate string comparison.</font>
+00107
+00108 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> m_ring_buffer[N + F - 1];
+00109
+00110 <font class="comment">// m_match_position and m_match_length are set by InsertNode().</font>
+00111 <font class="comment">//</font>
+00112 <font class="comment">// These variables indicate the position in the ring buffer </font>
+00113 <font class="comment">// and the number of characters at that position that match</font>
+00114 <font class="comment">// a given string.</font>
+00115
+00116 <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_match_position;
+00117 <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_match_length;
+00118
+00119 <font class="comment">// m_lson, m_rson, and m_dad are the Japanese way of referring to</font>
+00120 <font class="comment">// a tree structure. The dad is the parent and it has a right and</font>
+00121 <font class="comment">// left son (child).</font>
+00122 <font class="comment">//</font>
+00123 <font class="comment">// For i = 0 to N-1, m_rson[i] and m_lson[i] will be the right </font>
+00124 <font class="comment">// and left children of node i. </font>
+00125 <font class="comment">//</font>
+00126 <font class="comment">// For i = 0 to N-1, m_dad[i] is the parent of node i.</font>
+00127 <font class="comment">//</font>
+00128 <font class="comment">// For i = 0 to 255, rson[N + i + 1] is the root of the tree for </font>
+00129 <font class="comment">// strings that begin with the character i. Note that this requires </font>
+00130 <font class="comment">// one byte characters.</font>
+00131 <font class="comment">//</font>
+00132 <font class="comment">// These nodes store values of 0...(N-1). Memory requirements</font>
+00133 <font class="comment">// can be reduces by using 2-byte integers instead of full 4-byte</font>
+00134 <font class="comment">// integers (for 32-bit applications). Therefore, these are </font>
+00135 <font class="comment">// defined as "short ints."</font>
+00136
+00137 <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_lson[N + 1];
+00138 <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_rson[N + 257];
+00139 <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_dad[N + 1];
+00140
+00141 <font class="comment">/*</font>
+00142 <font class="comment"> -------------------------------------------------------------------------</font>
+00143 <font class="comment"> cLZSS::InitTree</font>
+00144 <font class="comment"> </font>
+00145 <font class="comment"> This function initializes the tree nodes to "empty" states. </font>
+00146 <font class="comment"> -------------------------------------------------------------------------</font>
+00147 <font class="comment">*/</font>
+00148
+00149 <font class="keywordtype">void</font> cLZSS::InitTree( <font class="comment">// no return value</font>
+00150 <font class="keywordtype">void</font>) <font class="comment">// no parameters</font>
+00151 <font class="keywordflow">throw</font>() <font class="comment">// exception list</font>
+00152
+00153 {
+00154 <font class="keywordtype">int</font> i;
+00155
+00156 <font class="comment">// For i = 0 to N - 1, m_rson[i] and m_lson[i] will be the right</font>
+00157 <font class="comment">// and left children of node i. These nodes need not be</font>
+00158 <font class="comment">// initialized. However, for debugging purposes, it is nice to</font>
+00159 <font class="comment">// have them initialized. Since this is only used for compression</font>
+00160 <font class="comment">// (not decompression), I don't mind spending the time to do it.</font>
+00161 <font class="comment">//</font>
+00162 <font class="comment">// For the same range of i, m_dad[i] is the parent of node i.</font>
+00163 <font class="comment">// These are initialized to a known value that can represent</font>
+00164 <font class="comment">// a "not used" state.</font>
+00165
+00166 <font class="keywordflow">for</font> (i = 0; i &lt; N; i++)
+00167 {
+00168 m_lson[i] = NOT_USED;
+00169 m_rson[i] = NOT_USED;
+00170 m_dad[i] = NOT_USED;
+00171 }
+00172
+00173 <font class="comment">// For i = 0 to 255, m_rson[N + i + 1] is the root of the tree</font>
+00174 <font class="comment">// for strings that begin with the character i. This is why</font>
+00175 <font class="comment">// the right child array is larger than the left child array.</font>
+00176 <font class="comment">// These are also initialzied to a "not used" state.</font>
+00177 <font class="comment">//</font>
+00178 <font class="comment">// Note that there are 256 of these, one for each of the possible</font>
+00179 <font class="comment">// 256 characters.</font>
+00180
+00181 <font class="keywordflow">for</font> (i = N + 1; i &lt;= (N + 256); i++)
+00182 {
+00183 m_rson[i] = NOT_USED;
+00184 }
+00185
+00186 <font class="comment">// Done.</font>
+00187 }
+00188
+00189 <font class="comment">/*</font>
+00190 <font class="comment"> -------------------------------------------------------------------------</font>
+00191 <font class="comment"> cLZSS::InsertNode</font>
+00192 <font class="comment"> </font>
+00193 <font class="comment"> This function inserts a string from the ring buffer into one of</font>
+00194 <font class="comment"> the trees. It loads the match position and length member variables</font>
+00195 <font class="comment"> for the longest match.</font>
+00196 <font class="comment"> </font>
+00197 <font class="comment"> The string to be inserted is identified by the parameter Pos,</font>
+00198 <font class="comment"> A full F bytes are inserted. So, m_ring_buffer[Pos ... Pos+F-1]</font>
+00199 <font class="comment"> are inserted.</font>
+00200 <font class="comment"></font>
+00201 <font class="comment"> If the matched length is exactly F, then an old node is removed</font>
+00202 <font class="comment"> in favor of the new one (because the old one will be deleted</font>
+00203 <font class="comment"> sooner).</font>
+00204 <font class="comment"></font>
+00205 <font class="comment"> Note that Pos plays a dual role. It is used as both a position</font>
+00206 <font class="comment"> in the ring buffer and also as a tree node. m_ring_buffer[Pos]</font>
+00207 <font class="comment"> defines a character that is used to identify a tree node.</font>
+00208 <font class="comment"> -------------------------------------------------------------------------</font>
+00209 <font class="comment">*/</font>
+00210
+00211 <font class="keywordtype">void</font> cLZSS::InsertNode( <font class="comment">// no return value</font>
+00212 <font class="keywordtype">short</font> <font class="keywordtype">int</font> Pos) <font class="comment">// position in the buffer</font>
+00213 <font class="keywordflow">throw</font>() <font class="comment">// exception list</font>
+00214
+00215 {
+00216 <font class="keywordtype">short</font> <font class="keywordtype">int</font> i;
+00217 <font class="keywordtype">short</font> <font class="keywordtype">int</font> p;
+00218 <font class="keywordtype">int</font> cmp;
+00219 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> * key;
+00220
+00221 ASSERT(Pos &gt;= 0);
+00222 ASSERT(Pos &lt; N);
+00223
+00224 cmp = 1;
+00225 key = &amp;(m_ring_buffer[Pos]);
+00226
+00227 <font class="comment">// The last 256 entries in m_rson contain the root nodes for</font>
+00228 <font class="comment">// strings that begin with a letter. Get an index for the</font>
+00229 <font class="comment">// first letter in this string.</font>
+00230
+00231 p = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) (N + 1 + key[0]);
+00232
+00233 <font class="comment">// Set the left and right tree nodes for this position to "not</font>
+00234 <font class="comment">// used."</font>
+00235
+00236 m_lson[Pos] = NOT_USED;
+00237 m_rson[Pos] = NOT_USED;
+00238
+00239 <font class="comment">// Haven't matched anything yet.</font>
+00240
+00241 m_match_length = 0;
+00242
+00243 <font class="keywordflow">for</font> ( ; ; )
+00244 {
+00245 <font class="keywordflow">if</font> (cmp &gt;= 0)
+00246 {
+00247 <font class="keywordflow">if</font> (m_rson[p] != NOT_USED)
+00248 {
+00249 p = m_rson[p];
+00250 }
+00251 <font class="keywordflow">else</font>
+00252 {
+00253 m_rson[p] = Pos;
+00254 m_dad[Pos] = p;
+00255 <font class="keywordflow">return</font>;
+00256 }
+00257 }
+00258 <font class="keywordflow">else</font>
+00259 {
+00260 <font class="keywordflow">if</font> (m_lson[p] != NOT_USED)
+00261 {
+00262 p = m_lson[p];
+00263 }
+00264 <font class="keywordflow">else</font>
+00265 {
+00266 m_lson[p] = Pos;
+00267 m_dad[Pos] = p;
+00268 <font class="keywordflow">return</font>;
+00269 }
+00270 }
+00271
+00272 <font class="comment">// Should we go to the right or the left to look for the</font>
+00273 <font class="comment">// next match?</font>
+00274
+00275 <font class="keywordflow">for</font> (i = 1; i &lt; F; i++)
+00276 {
+00277 cmp = key[i] - m_ring_buffer[p + i];
+00278 <font class="keywordflow">if</font> (cmp != 0)
+00279 <font class="keywordflow">break</font>;
+00280 }
+00281
+00282 <font class="keywordflow">if</font> (i &gt; m_match_length)
+00283 {
+00284 m_match_position = p;
+00285 m_match_length = i;
+00286
+00287 <font class="keywordflow">if</font> (i &gt;= F)
+00288 <font class="keywordflow">break</font>;
+00289 }
+00290 }
+00291
+00292 m_dad[Pos] = m_dad[p];
+00293 m_lson[Pos] = m_lson[p];
+00294 m_rson[Pos] = m_rson[p];
+00295
+00296 m_dad[ m_lson[p] ] = Pos;
+00297 m_dad[ m_rson[p] ] = Pos;
+00298
+00299 <font class="keywordflow">if</font> (m_rson[ m_dad[p] ] == p)
+00300 {
+00301 m_rson[ m_dad[p] ] = Pos;
+00302 }
+00303 <font class="keywordflow">else</font>
+00304 {
+00305 m_lson[ m_dad[p] ] = Pos;
+00306 }
+00307
+00308 <font class="comment">// Remove "p"</font>
+00309
+00310 m_dad[p] = NOT_USED;
+00311 }
+00312
+00313 <font class="comment">/*</font>
+00314 <font class="comment"> -------------------------------------------------------------------------</font>
+00315 <font class="comment"> cLZSS::DeleteNode </font>
+00316 <font class="comment"></font>
+00317 <font class="comment"> This function removes the node "Node" from the tree.</font>
+00318 <font class="comment"> -------------------------------------------------------------------------</font>
+00319 <font class="comment">*/</font>
+00320
+00321 <font class="keywordtype">void</font> cLZSS::DeleteNode( <font class="comment">// no return value</font>
+00322 <font class="keywordtype">short</font> <font class="keywordtype">int</font> Node) <font class="comment">// node to be removed</font>
+00323 <font class="keywordflow">throw</font>() <font class="comment">// exception list</font>
+00324
+00325 {
+00326 <font class="keywordtype">short</font> <font class="keywordtype">int</font> q;
+00327
+00328 ASSERT(Node &gt;= 0);
+00329 ASSERT(Node &lt; (N+1));
+00330
+00331 <font class="keywordflow">if</font> (m_dad[Node] == NOT_USED)
+00332 {
+00333 <font class="comment">// not in tree, nothing to do</font>
+00334 <font class="keywordflow">return</font>;
+00335 }
+00336
+00337 <font class="keywordflow">if</font> (m_rson[Node] == NOT_USED)
+00338 {
+00339 q = m_lson[Node];
+00340 }
+00341 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (m_lson[Node] == NOT_USED)
+00342 {
+00343 q = m_rson[Node];
+00344 }
+00345 <font class="keywordflow">else</font>
+00346 {
+00347 q = m_lson[Node];
+00348 <font class="keywordflow">if</font> (m_rson[q] != NOT_USED)
+00349 {
+00350 <font class="keywordflow">do</font>
+00351 {
+00352 q = m_rson[q];
+00353 }
+00354 <font class="keywordflow">while</font> (m_rson[q] != NOT_USED);
+00355
+00356 m_rson[ m_dad[q] ] = m_lson[q];
+00357 m_dad[ m_lson[q] ] = m_dad[q];
+00358 m_lson[q] = m_lson[Node];
+00359 m_dad[ m_lson[Node] ] = q;
+00360 }
+00361
+00362 m_rson[q] = m_rson[Node];
+00363 m_dad[ m_rson[Node] ] = q;
+00364 }
+00365
+00366 m_dad[q] = m_dad[Node];
+00367
+00368 <font class="keywordflow">if</font> (m_rson[ m_dad[Node] ] == Node)
+00369 {
+00370 m_rson[ m_dad[Node] ] = q;
+00371 }
+00372 <font class="keywordflow">else</font>
+00373 {
+00374 m_lson[ m_dad[Node] ] = q;
+00375 }
+00376
+00377 m_dad[Node] = NOT_USED;
+00378 }
+00379
+00380 <font class="comment">/*</font>
+00381 <font class="comment"> -------------------------------------------------------------------------</font>
+00382 <font class="comment"> cLZSS::Encode</font>
+00383 <font class="comment"></font>
+00384 <font class="comment"> This function "encodes" the input stream into the output stream.</font>
+00385 <font class="comment"> The GetChars() and SendChars() functions are used to separate</font>
+00386 <font class="comment"> this method from the actual i/o.</font>
+00387 <font class="comment"> -------------------------------------------------------------------------</font>
+00388 <font class="comment">*/</font>
+00389
+00390 <font class="keywordtype">void</font> cLZSS::Encode( <font class="comment">// no return value</font>
+00391 <font class="keywordtype">void</font>) <font class="comment">// no parameters</font>
+00392
+00393 {
+00394 <font class="keywordtype">short</font> <font class="keywordtype">int</font> i; <font class="comment">// an iterator</font>
+00395 <font class="keywordtype">short</font> <font class="keywordtype">int</font> r; <font class="comment">// node number in the binary tree</font>
+00396 <font class="keywordtype">short</font> <font class="keywordtype">int</font> s; <font class="comment">// position in the ring buffer</font>
+00397 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> <font class="keywordtype">int</font> len; <font class="comment">// len of initial string</font>
+00398 <font class="keywordtype">short</font> <font class="keywordtype">int</font> last_match_length; <font class="comment">// length of last match</font>
+00399 <font class="keywordtype">short</font> <font class="keywordtype">int</font> code_buf_pos; <font class="comment">// position in the output buffer</font>
+00400 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> code_buf[17]; <font class="comment">// the output buffer</font>
+00401 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> mask; <font class="comment">// bit mask for byte 0 of out buf</font>
+00402 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> c; <font class="comment">// character read from string</font>
+00403
+00404 <font class="comment">// Start with a clean tree.</font>
+00405
+00406 InitTree();
+00407
+00408 <font class="comment">// code_buf[0] works as eight flags. A "1" represents that the</font>
+00409 <font class="comment">// unit is an unencoded letter (1 byte), and a "0" represents</font>
+00410 <font class="comment">// that the next unit is a &lt;position,length&gt; pair (2 bytes).</font>
+00411 <font class="comment">//</font>
+00412 <font class="comment">// code_buf[1..16] stores eight units of code. Since the best</font>
+00413 <font class="comment">// we can do is store eight &lt;position,length&gt; pairs, at most 16 </font>
+00414 <font class="comment">// bytes are needed to store this.</font>
+00415 <font class="comment">//</font>
+00416 <font class="comment">// This is why the maximum size of the code buffer is 17 bytes.</font>
+00417
+00418 code_buf[0] = 0;
+00419 code_buf_pos = 1;
+00420
+00421 <font class="comment">// Mask iterates over the 8 bits in the code buffer. The first</font>
+00422 <font class="comment">// character ends up being stored in the low bit.</font>
+00423 <font class="comment">//</font>
+00424 <font class="comment">// bit 8 7 6 5 4 3 2 1</font>
+00425 <font class="comment">// | |</font>
+00426 <font class="comment">// | first sequence in code buffer</font>
+00427 <font class="comment">// |</font>
+00428 <font class="comment">// last sequence in code buffer </font>
+00429
+00430 mask = 1;
+00431
+00432 s = 0;
+00433 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) N - (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) F;
+00434
+00435 <font class="comment">// Initialize the ring buffer with spaces...</font>
+00436
+00437 <font class="comment">// Note that the last F bytes of the ring buffer are not filled.</font>
+00438 <font class="comment">// This is because those F bytes will be filled in immediately</font>
+00439 <font class="comment">// with bytes from the input stream.</font>
+00440
+00441 memset(m_ring_buffer, <font class="charliteral">' '</font>, N - F);
+00442
+00443 <font class="comment">// Read F bytes into the last F bytes of the ring buffer.</font>
+00444 <font class="comment">//</font>
+00445 <font class="comment">// This function loads the buffer with X characters and returns</font>
+00446 <font class="comment">// the actual amount loaded.</font>
+00447
+00448 len = GetChars(&amp;(m_ring_buffer[r]), F);
+00449
+00450 <font class="comment">// Make sure there is something to be compressed.</font>
+00451
+00452 <font class="keywordflow">if</font> (len == 0)
+00453 <font class="keywordflow">return</font>;
+00454
+00455 <font class="comment">// Insert the F strings, each of which begins with one or more</font>
+00456 <font class="comment">// 'space' characters. Note the order in which these strings</font>
+00457 <font class="comment">// are inserted. This way, degenerate trees will be less likely</font>
+00458 <font class="comment">// to occur.</font>
+00459
+00460 <font class="keywordflow">for</font> (i = 1; i &lt;= F; i++)
+00461 {
+00462 InsertNode((<font class="keywordtype">short</font> <font class="keywordtype">int</font>) (r - i));
+00463 }
+00464
+00465 <font class="comment">// Finally, insert the whole string just read. The</font>
+00466 <font class="comment">// member variables match_length and match_position are set.</font>
+00467
+00468 InsertNode(r);
+00469
+00470 <font class="comment">// Now that we're preloaded, continue till done.</font>
+00471
+00472 <font class="keywordflow">do</font>
+00473 {
+00474
+00475 <font class="comment">// m_match_length may be spuriously long near the end of</font>
+00476 <font class="comment">// text.</font>
+00477
+00478 <font class="keywordflow">if</font> (m_match_length &gt; len)
+00479 {
+00480 m_match_length = len;
+00481 }
+00482
+00483 <font class="comment">// Is it cheaper to store this as a single character? If so,</font>
+00484 <font class="comment">// make it so.</font>
+00485
+00486 <font class="keywordflow">if</font> (m_match_length &lt; THRESHOLD)
+00487 {
+00488 <font class="comment">// Send one character. Remember that code_buf[0] is the</font>
+00489 <font class="comment">// set of flags for the next eight items.</font>
+00490
+00491 m_match_length = 1;
+00492 code_buf[0] |= mask;
+00493 code_buf[code_buf_pos++] = m_ring_buffer[r];
+00494 }
+00495
+00496 <font class="comment">// Otherwise, we do indeed have a string that can be stored</font>
+00497 <font class="comment">// compressed to save space.</font>
+00498
+00499 <font class="keywordflow">else</font>
+00500 {
+00501 <font class="comment">// The next 16 bits need to contain the position (12 bits)</font>
+00502 <font class="comment">// and the length (4 bits).</font>
+00503
+00504 code_buf[code_buf_pos++] = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) m_match_position;
+00505 code_buf[code_buf_pos++] = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) (
+00506 ((m_match_position &gt;&gt; 4) &amp; 0xf0) |
+00507 (m_match_length - THRESHOLD) );
+00508 }
+00509
+00510 <font class="comment">// Shift the mask one bit to the left so that it will be ready</font>
+00511 <font class="comment">// to store the new bit.</font>
+00512
+00513 mask = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) (mask &lt;&lt; 1);
+00514
+00515 <font class="comment">// If the mask is now 0, then we know that we have a full set</font>
+00516 <font class="comment">// of flags and items in the code buffer. These need to be</font>
+00517 <font class="comment">// output.</font>
+00518
+00519 <font class="keywordflow">if</font> (mask == 0)
+00520 {
+00521 <font class="comment">// code_buf is the buffer of characters to be output.</font>
+00522 <font class="comment">// code_buf_pos is the number of characters it contains.</font>
+00523
+00524 SendChars(code_buf, code_buf_pos);
+00525
+00526 <font class="comment">// Reset for next buffer...</font>
+00527
+00528 code_buf[0] = 0;
+00529 code_buf_pos = 1;
+00530 mask = 1;
+00531 }
+00532
+00533 last_match_length = m_match_length;
+00534
+00535 <font class="comment">// Delete old strings and read new bytes...</font>
+00536
+00537 <font class="keywordflow">for</font> (i = 0; i &lt; last_match_length; i++)
+00538 {
+00539
+00540 <font class="comment">// Get next character...</font>
+00541
+00542 <font class="keywordflow">if</font> (GetChars(&amp;c, 1) != 1)
+00543 <font class="keywordflow">break</font>;
+00544
+00545 <font class="comment">// Delete "old strings"</font>
+00546
+00547 DeleteNode(s);
+00548
+00549 <font class="comment">// Put this character into the ring buffer.</font>
+00550 <font class="comment">// </font>
+00551 <font class="comment">// The original comment here says "If the position is near</font>
+00552 <font class="comment">// the end of the buffer, extend the buffer to make</font>
+00553 <font class="comment">// string comparison easier."</font>
+00554 <font class="comment">//</font>
+00555 <font class="comment">// That's a little misleading, because the "end" of the </font>
+00556 <font class="comment">// buffer is really what we consider to be the "beginning"</font>
+00557 <font class="comment">// of the buffer, that is, positions 0 through F.</font>
+00558 <font class="comment">//</font>
+00559 <font class="comment">// The idea is that the front end of the buffer is duplicated</font>
+00560 <font class="comment">// into the back end so that when you're looking at characters</font>
+00561 <font class="comment">// at the back end of the buffer, you can index ahead (beyond</font>
+00562 <font class="comment">// the normal end of the buffer) and see the characters</font>
+00563 <font class="comment">// that are at the front end of the buffer wihtout having</font>
+00564 <font class="comment">// to adjust the index.</font>
+00565 <font class="comment">//</font>
+00566 <font class="comment">// That is...</font>
+00567 <font class="comment">//</font>
+00568 <font class="comment">// 1234xxxxxxxxxxxxxxxxxxxxxxxxxxxxx1234</font>
+00569 <font class="comment">// | | |</font>
+00570 <font class="comment">// position 0 end of buffer |</font>
+00571 <font class="comment">// |</font>
+00572 <font class="comment">// duplicate of front of buffer</font>
+00573
+00574 m_ring_buffer[s] = c;
+00575
+00576 <font class="keywordflow">if</font> (s &lt; F - 1)
+00577 {
+00578 m_ring_buffer[s + N] = c;
+00579 }
+00580
+00581 <font class="comment">// Increment the position, and wrap around when we're at</font>
+00582 <font class="comment">// the end. Note that this relies on N being a power of 2.</font>
+00583
+00584 s = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (s + 1) &amp; (N - 1) );
+00585 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00586
+00587 <font class="comment">// Register the string that is found in </font>
+00588 <font class="comment">// m_ring_buffer[r..r+F-1].</font>
+00589
+00590 InsertNode(r);
+00591 }
+00592
+00593 <font class="comment">// If we didn't quit because we hit the last_match_length,</font>
+00594 <font class="comment">// then we must have quit because we ran out of characters</font>
+00595 <font class="comment">// to process.</font>
+00596
+00597 <font class="keywordflow">while</font> (i++ &lt; last_match_length)
+00598 {
+00599 DeleteNode(s);
+00600
+00601 s = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (s + 1) &amp; (N - 1) );
+00602 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00603
+00604 <font class="comment">// Note that len hitting 0 is the key that causes the</font>
+00605 <font class="comment">// do...while() to terminate. This is the only place</font>
+00606 <font class="comment">// within the loop that len is modified.</font>
+00607 <font class="comment">//</font>
+00608 <font class="comment">// Its original value is F (or a number less than F for</font>
+00609 <font class="comment">// short strings).</font>
+00610
+00611 <font class="keywordflow">if</font> (--len)
+00612 {
+00613 InsertNode(r); <font class="comment">/* buffer may not be empty. */</font>
+00614 }
+00615 }
+00616
+00617 <font class="comment">// End of do...while() loop. Continue processing until there</font>
+00618 <font class="comment">// are no more characters to be compressed. The variable</font>
+00619 <font class="comment">// "len" is used to signal this condition.</font>
+00620 }
+00621 <font class="keywordflow">while</font> (len &gt; 0);
+00622
+00623 <font class="comment">// There could still be something in the output buffer. Send it</font>
+00624 <font class="comment">// now.</font>
+00625
+00626 <font class="keywordflow">if</font> (code_buf_pos &gt; 1)
+00627 {
+00628 <font class="comment">// code_buf is the encoded string to send.</font>
+00629 <font class="comment">// code_buf_ptr is the number of characters.</font>
+00630
+00631 SendChars(code_buf, code_buf_pos);
+00632 }
+00633
+00634 <font class="comment">// Done!</font>
+00635 }
+00636
+00637 <font class="comment">/*</font>
+00638 <font class="comment"> -------------------------------------------------------------------------</font>
+00639 <font class="comment"> cLZSS::Decode </font>
+00640 <font class="comment"></font>
+00641 <font class="comment"> This function "decodes" the input stream into the output stream.</font>
+00642 <font class="comment"> The GetChars() and SendChars() functions are used to separate</font>
+00643 <font class="comment"> this method from the actual i/o.</font>
+00644 <font class="comment"> -------------------------------------------------------------------------</font>
+00645 <font class="comment">*/</font>
+00646
+00647 <font class="keywordtype">void</font> cLZSS::Decode( <font class="comment">// no return value</font>
+00648 <font class="keywordtype">void</font>) <font class="comment">// no parameters</font>
+00649
+00650 {
+00651 <font class="keywordtype">int</font> k;
+00652 <font class="keywordtype">int</font> r; <font class="comment">// node number</font>
+00653 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> c[F]; <font class="comment">// an array of chars</font>
+00654 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> flags; <font class="comment">// 8 bits of flags</font>
+00655 <font class="keywordtype">int</font> flag_count; <font class="comment">// which flag we're on</font>
+00656 <font class="keywordtype">short</font> <font class="keywordtype">int</font> pos; <font class="comment">// position in the ring buffer</font>
+00657 <font class="keywordtype">short</font> <font class="keywordtype">int</font> len; <font class="comment">// number of chars in ring buffer</font>
+00658
+00659 <font class="comment">// Initialize the ring buffer with a common string.</font>
+00660 <font class="comment">//</font>
+00661 <font class="comment">// Note that the last F bytes of the ring buffer are not filled.</font>
+00662
+00663 memset(m_ring_buffer, <font class="charliteral">' '</font>, N - F);
+00664
+00665 r = N - F;
+00666
+00667 flags = (char) 0;
+00668 flag_count = 0;
+00669
+00670 <font class="keywordflow">for</font> ( ; ; )
+00671 {
+00672
+00673 <font class="comment">// If there are more bits of interest in this flag, then</font>
+00674 <font class="comment">// shift that next interesting bit into the 1's position.</font>
+00675 <font class="comment">//</font>
+00676 <font class="comment">// If this flag has been exhausted, the next byte must </font>
+00677 <font class="comment">// be a flag.</font>
+00678
+00679 <font class="keywordflow">if</font> (flag_count &gt; 0)
+00680 {
+00681 flags = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) (flags &gt;&gt; 1);
+00682 flag_count--;
+00683 }
+00684 <font class="keywordflow">else</font>
+00685 {
+00686 <font class="comment">// Next byte must be a flag.</font>
+00687
+00688 <font class="keywordflow">if</font> (GetChars(&amp;flags, 1) != 1)
+00689 <font class="keywordflow">break</font>;
+00690
+00691 <font class="comment">// Set the flag counter. While at first it might appear</font>
+00692 <font class="comment">// that this should be an 8 since there are 8 bits in the</font>
+00693 <font class="comment">// flag, it should really be a 7 because the shift must</font>
+00694 <font class="comment">// be performed 7 times in order to see all 8 bits.</font>
+00695
+00696 flag_count = 7;
+00697 }
+00698
+00699 <font class="comment">// If the low order bit of the flag is now set, then we know</font>
+00700 <font class="comment">// that the next byte is a single, unencoded character.</font>
+00701
+00702 <font class="keywordflow">if</font> (flags &amp; 1)
+00703 {
+00704 <font class="keywordflow">if</font> (GetChars(c, 1) != 1)
+00705 <font class="keywordflow">break</font>;
+00706
+00707 <font class="keywordflow">if</font> (SendChars(c, 1) != 1)
+00708 <font class="keywordflow">break</font>;
+00709
+00710 <font class="comment">// Add to buffer, and increment to next spot. Wrap at end.</font>
+00711
+00712 m_ring_buffer[r] = c[0];
+00713 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00714 }
+00715
+00716 <font class="comment">// Otherwise, we know that the next two bytes are a</font>
+00717 <font class="comment">// &lt;position,length&gt; pair. The position is in 12 bits and</font>
+00718 <font class="comment">// the length is in 4 bits.</font>
+00719
+00720 <font class="keywordflow">else</font>
+00721 {
+00722 <font class="comment">// Original code:</font>
+00723 <font class="comment">// if ((i = getc(infile)) == EOF)</font>
+00724 <font class="comment">// break;</font>
+00725 <font class="comment">// if ((j = getc(infile)) == EOF)</font>
+00726 <font class="comment">// break;</font>
+00727 <font class="comment">// i |= ((j &amp; 0xf0) &lt;&lt; 4); </font>
+00728 <font class="comment">// j = (j &amp; 0x0f) + THRESHOLD;</font>
+00729 <font class="comment">//</font>
+00730 <font class="comment">// I've modified this to only make one input call, and</font>
+00731 <font class="comment">// have changed the variable names to something more</font>
+00732 <font class="comment">// obvious.</font>
+00733
+00734 <font class="keywordflow">if</font> (GetChars(c, 2) != 2)
+00735 <font class="keywordflow">break</font>;
+00736
+00737 <font class="comment">// Convert these two characters into the position and</font>
+00738 <font class="comment">// length. Note that the length is always at least</font>
+00739 <font class="comment">// THRESHOLD, which is why we're able to get a length</font>
+00740 <font class="comment">// of 18 out of only 4 bits.</font>
+00741
+00742 pos = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( c[0] | ((c[1] &amp; 0xf0) &lt;&lt; 4) );
+00743
+00744 len = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (c[1] &amp; 0x0f) + THRESHOLD );
+00745
+00746 <font class="comment">// There are now "len" characters at position "pos" in</font>
+00747 <font class="comment">// the ring buffer that can be pulled out. Note that</font>
+00748 <font class="comment">// len is never more than F.</font>
+00749
+00750 <font class="keywordflow">for</font> (k = 0; k &lt; len; k++)
+00751 {
+00752 c[k] = m_ring_buffer[(pos + k) &amp; (N - 1)];
+00753
+00754 <font class="comment">// Add to buffer, and increment to next spot. Wrap at end.</font>
+00755
+00756 m_ring_buffer[r] = c[k];
+00757 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00758 }
+00759
+00760 <font class="comment">// Add the "len" characters to the output stream.</font>
+00761
+00762 <font class="keywordflow">if</font> (SendChars(c, len) != len)
+00763 <font class="keywordflow">break</font>;
+00764 }
+00765 }
+00766 }
+00767
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/deflate_8h-source.html b/doc/api-documentation/html/deflate_8h-source.html
new file mode 100644
index 0000000..9b1889f
--- /dev/null
+++ b/doc/api-documentation/html/deflate_8h-source.html
@@ -0,0 +1,332 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>deflate.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>deflate.h</h1><div class="fragment"><pre>00001 <font class="comment">/* deflate.h -- internal compression state</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Jean-loup Gailly</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h </font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00007 <font class="comment"> part of the implementation of the compression library and is</font>
+00008 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00009 <font class="comment"> */</font>
+00010
+00011 <font class="comment">/* @(#) $Id: deflate_8h-source.html,v 1.3 2002/06/20 20:23:08 mgruner Exp $ */</font>
+00012
+00013 <font class="preprocessor">#ifndef _DEFLATE_H</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#define _DEFLATE_H</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include "zutil.h"</font>
+00017
+00018 <font class="comment">/* ===========================================================================</font>
+00019 <font class="comment"> * Internal compression state.</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#define LENGTH_CODES 29</font>
+00023 <font class="preprocessor"></font><font class="comment">/* number of length codes, not counting the special END_BLOCK code */</font>
+00024
+00025 <font class="preprocessor">#define LITERALS 256</font>
+00026 <font class="preprocessor"></font><font class="comment">/* number of literal bytes 0..255 */</font>
+00027
+00028 <font class="preprocessor">#define L_CODES (LITERALS+1+LENGTH_CODES)</font>
+00029 <font class="preprocessor"></font><font class="comment">/* number of Literal or Length codes, including the END_BLOCK code */</font>
+00030
+00031 <font class="preprocessor">#define D_CODES 30</font>
+00032 <font class="preprocessor"></font><font class="comment">/* number of distance codes */</font>
+00033
+00034 <font class="preprocessor">#define BL_CODES 19</font>
+00035 <font class="preprocessor"></font><font class="comment">/* number of codes used to transfer the bit lengths */</font>
+00036
+00037 <font class="preprocessor">#define HEAP_SIZE (2*L_CODES+1)</font>
+00038 <font class="preprocessor"></font><font class="comment">/* maximum heap size */</font>
+00039
+00040 <font class="preprocessor">#define MAX_BITS 15</font>
+00041 <font class="preprocessor"></font><font class="comment">/* All codes must not exceed MAX_BITS bits */</font>
+00042
+00043 <font class="preprocessor">#define INIT_STATE 42</font>
+00044 <font class="preprocessor"></font><font class="preprocessor">#define BUSY_STATE 113</font>
+00045 <font class="preprocessor"></font><font class="preprocessor">#define FINISH_STATE 666</font>
+00046 <font class="preprocessor"></font><font class="comment">/* Stream status */</font>
+00047
+00048
+00049 <font class="comment">/* Data structure describing a single value and its code string. */</font>
+00050 <font class="keyword">typedef</font> <font class="keyword">struct </font>ct_data_s {
+00051 <font class="keyword">union </font>{
+00052 ush freq; <font class="comment">/* frequency count */</font>
+00053 ush code; <font class="comment">/* bit string */</font>
+00054 } fc;
+00055 <font class="keyword">union </font>{
+00056 ush dad; <font class="comment">/* father node in Huffman tree */</font>
+00057 ush len; <font class="comment">/* length of bit string */</font>
+00058 } dl;
+00059 } FAR ct_data;
+00060
+00061 <font class="preprocessor">#define Freq fc.freq</font>
+00062 <font class="preprocessor"></font><font class="preprocessor">#define Code fc.code</font>
+00063 <font class="preprocessor"></font><font class="preprocessor">#define Dad dl.dad</font>
+00064 <font class="preprocessor"></font><font class="preprocessor">#define Len dl.len</font>
+00065 <font class="preprocessor"></font>
+00066 <font class="keyword">typedef</font> <font class="keyword">struct </font>static_tree_desc_s static_tree_desc;
+00067
+00068 <font class="keyword">typedef</font> <font class="keyword">struct </font>tree_desc_s {
+00069 ct_data *dyn_tree; <font class="comment">/* the dynamic tree */</font>
+00070 <font class="keywordtype">int</font> max_code; <font class="comment">/* largest code with non zero frequency */</font>
+00071 static_tree_desc *stat_desc; <font class="comment">/* the corresponding static tree */</font>
+00072 } FAR tree_desc;
+00073
+00074 <font class="keyword">typedef</font> ush Pos;
+00075 <font class="keyword">typedef</font> Pos FAR Posf;
+00076 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> IPos;
+00077
+00078 <font class="comment">/* A Pos is an index in the character window. We use short instead of int to</font>
+00079 <font class="comment"> * save space in the various tables. IPos is used only for parameter passing.</font>
+00080 <font class="comment"> */</font>
+00081
+00082 <font class="keyword">typedef</font> <font class="keyword">struct </font>internal_state {
+00083 z_streamp strm; <font class="comment">/* pointer back to this zlib stream */</font>
+00084 <font class="keywordtype">int</font> status; <font class="comment">/* as the name implies */</font>
+00085 Bytef *pending_buf; <font class="comment">/* output still pending */</font>
+00086 ulg pending_buf_size; <font class="comment">/* size of pending_buf */</font>
+00087 Bytef *pending_out; <font class="comment">/* next pending byte to output to the stream */</font>
+00088 <font class="keywordtype">int</font> pending; <font class="comment">/* nb of bytes in the pending buffer */</font>
+00089 <font class="keywordtype">int</font> noheader; <font class="comment">/* suppress zlib header and adler32 */</font>
+00090 Byte data_type; <font class="comment">/* UNKNOWN, BINARY or ASCII */</font>
+00091 Byte method; <font class="comment">/* STORED (for zip only) or DEFLATED */</font>
+00092 <font class="keywordtype">int</font> last_flush; <font class="comment">/* value of flush param for previous deflate call */</font>
+00093
+00094 <font class="comment">/* used by deflate.c: */</font>
+00095
+00096 uInt w_size; <font class="comment">/* LZ77 window size (32K by default) */</font>
+00097 uInt w_bits; <font class="comment">/* log2(w_size) (8..16) */</font>
+00098 uInt w_mask; <font class="comment">/* w_size - 1 */</font>
+00099
+00100 Bytef *window;
+00101 <font class="comment">/* Sliding window. Input bytes are read into the second half of the window,</font>
+00102 <font class="comment"> * and move to the first half later to keep a dictionary of at least wSize</font>
+00103 <font class="comment"> * bytes. With this organization, matches are limited to a distance of</font>
+00104 <font class="comment"> * wSize-MAX_MATCH bytes, but this ensures that IO is always</font>
+00105 <font class="comment"> * performed with a length multiple of the block size. Also, it limits</font>
+00106 <font class="comment"> * the window size to 64K, which is quite useful on MSDOS.</font>
+00107 <font class="comment"> * To do: use the user input buffer as sliding window.</font>
+00108 <font class="comment"> */</font>
+00109
+00110 ulg window_size;
+00111 <font class="comment">/* Actual size of window: 2*wSize, except when the user input buffer</font>
+00112 <font class="comment"> * is directly used as sliding window.</font>
+00113 <font class="comment"> */</font>
+00114
+00115 Posf *prev;
+00116 <font class="comment">/* Link to older string with same hash index. To limit the size of this</font>
+00117 <font class="comment"> * array to 64K, this link is maintained only for the last 32K strings.</font>
+00118 <font class="comment"> * An index in this array is thus a window index modulo 32K.</font>
+00119 <font class="comment"> */</font>
+00120
+00121 Posf *head; <font class="comment">/* Heads of the hash chains or NIL. */</font>
+00122
+00123 uInt ins_h; <font class="comment">/* hash index of string to be inserted */</font>
+00124 uInt hash_size; <font class="comment">/* number of elements in hash table */</font>
+00125 uInt hash_bits; <font class="comment">/* log2(hash_size) */</font>
+00126 uInt hash_mask; <font class="comment">/* hash_size-1 */</font>
+00127
+00128 uInt hash_shift;
+00129 <font class="comment">/* Number of bits by which ins_h must be shifted at each input</font>
+00130 <font class="comment"> * step. It must be such that after MIN_MATCH steps, the oldest</font>
+00131 <font class="comment"> * byte no longer takes part in the hash key, that is:</font>
+00132 <font class="comment"> * hash_shift * MIN_MATCH &gt;= hash_bits</font>
+00133 <font class="comment"> */</font>
+00134
+00135 <font class="keywordtype">long</font> block_start;
+00136 <font class="comment">/* Window position at the beginning of the current output block. Gets</font>
+00137 <font class="comment"> * negative when the window is moved backwards.</font>
+00138 <font class="comment"> */</font>
+00139
+00140 uInt match_length; <font class="comment">/* length of best match */</font>
+00141 IPos prev_match; <font class="comment">/* previous match */</font>
+00142 <font class="keywordtype">int</font> match_available; <font class="comment">/* set if previous match exists */</font>
+00143 uInt strstart; <font class="comment">/* start of string to insert */</font>
+00144 uInt match_start; <font class="comment">/* start of matching string */</font>
+00145 uInt lookahead; <font class="comment">/* number of valid bytes ahead in window */</font>
+00146
+00147 uInt prev_length;
+00148 <font class="comment">/* Length of the best match at previous step. Matches not greater than this</font>
+00149 <font class="comment"> * are discarded. This is used in the lazy match evaluation.</font>
+00150 <font class="comment"> */</font>
+00151
+00152 uInt max_chain_length;
+00153 <font class="comment">/* To speed up deflation, hash chains are never searched beyond this</font>
+00154 <font class="comment"> * length. A higher limit improves compression ratio but degrades the</font>
+00155 <font class="comment"> * speed.</font>
+00156 <font class="comment"> */</font>
+00157
+00158 uInt max_lazy_match;
+00159 <font class="comment">/* Attempt to find a better match only when the current match is strictly</font>
+00160 <font class="comment"> * smaller than this value. This mechanism is used only for compression</font>
+00161 <font class="comment"> * levels &gt;= 4.</font>
+00162 <font class="comment"> */</font>
+00163 <font class="preprocessor"># define max_insert_length max_lazy_match</font>
+00164 <font class="preprocessor"></font> <font class="comment">/* Insert new strings in the hash table only if the match length is not</font>
+00165 <font class="comment"> * greater than this length. This saves time but degrades compression.</font>
+00166 <font class="comment"> * max_insert_length is used only for compression levels &lt;= 3.</font>
+00167 <font class="comment"> */</font>
+00168
+00169 <font class="keywordtype">int</font> level; <font class="comment">/* compression level (1..9) */</font>
+00170 <font class="keywordtype">int</font> strategy; <font class="comment">/* favor or force Huffman coding*/</font>
+00171
+00172 uInt good_match;
+00173 <font class="comment">/* Use a faster search when the previous match is longer than this */</font>
+00174
+00175 <font class="keywordtype">int</font> nice_match; <font class="comment">/* Stop searching when current match exceeds this */</font>
+00176
+00177 <font class="comment">/* used by trees.c: */</font>
+00178 <font class="comment">/* Didn't use ct_data typedef below to supress compiler warning */</font>
+00179 <font class="keyword">struct </font>ct_data_s dyn_ltree[HEAP_SIZE]; <font class="comment">/* literal and length tree */</font>
+00180 <font class="keyword">struct </font>ct_data_s dyn_dtree[2*D_CODES+1]; <font class="comment">/* distance tree */</font>
+00181 <font class="keyword">struct </font>ct_data_s bl_tree[2*BL_CODES+1]; <font class="comment">/* Huffman tree for bit lengths */</font>
+00182
+00183 <font class="keyword">struct </font>tree_desc_s l_desc; <font class="comment">/* desc. for literal tree */</font>
+00184 <font class="keyword">struct </font>tree_desc_s d_desc; <font class="comment">/* desc. for distance tree */</font>
+00185 <font class="keyword">struct </font>tree_desc_s bl_desc; <font class="comment">/* desc. for bit length tree */</font>
+00186
+00187 ush bl_count[MAX_BITS+1];
+00188 <font class="comment">/* number of codes at each bit length for an optimal tree */</font>
+00189
+00190 <font class="keywordtype">int</font> heap[2*L_CODES+1]; <font class="comment">/* heap used to build the Huffman trees */</font>
+00191 <font class="keywordtype">int</font> heap_len; <font class="comment">/* number of elements in the heap */</font>
+00192 <font class="keywordtype">int</font> heap_max; <font class="comment">/* element of largest frequency */</font>
+00193 <font class="comment">/* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.</font>
+00194 <font class="comment"> * The same heap array is used to build all trees.</font>
+00195 <font class="comment"> */</font>
+00196
+00197 uch depth[2*L_CODES+1];
+00198 <font class="comment">/* Depth of each subtree used as tie breaker for trees of equal frequency</font>
+00199 <font class="comment"> */</font>
+00200
+00201 uchf *l_buf; <font class="comment">/* buffer for literals or lengths */</font>
+00202
+00203 uInt lit_bufsize;
+00204 <font class="comment">/* Size of match buffer for literals/lengths. There are 4 reasons for</font>
+00205 <font class="comment"> * limiting lit_bufsize to 64K:</font>
+00206 <font class="comment"> * - frequencies can be kept in 16 bit counters</font>
+00207 <font class="comment"> * - if compression is not successful for the first block, all input</font>
+00208 <font class="comment"> * data is still in the window so we can still emit a stored block even</font>
+00209 <font class="comment"> * when input comes from standard input. (This can also be done for</font>
+00210 <font class="comment"> * all blocks if lit_bufsize is not greater than 32K.)</font>
+00211 <font class="comment"> * - if compression is not successful for a file smaller than 64K, we can</font>
+00212 <font class="comment"> * even emit a stored file instead of a stored block (saving 5 bytes).</font>
+00213 <font class="comment"> * This is applicable only for zip (not gzip or zlib).</font>
+00214 <font class="comment"> * - creating new Huffman trees less frequently may not provide fast</font>
+00215 <font class="comment"> * adaptation to changes in the input data statistics. (Take for</font>
+00216 <font class="comment"> * example a binary file with poorly compressible code followed by</font>
+00217 <font class="comment"> * a highly compressible string table.) Smaller buffer sizes give</font>
+00218 <font class="comment"> * fast adaptation but have of course the overhead of transmitting</font>
+00219 <font class="comment"> * trees more frequently.</font>
+00220 <font class="comment"> * - I can't count above 4</font>
+00221 <font class="comment"> */</font>
+00222
+00223 uInt last_lit; <font class="comment">/* running index in l_buf */</font>
+00224
+00225 ushf *d_buf;
+00226 <font class="comment">/* Buffer for distances. To simplify the code, d_buf and l_buf have</font>
+00227 <font class="comment"> * the same number of elements. To use different lengths, an extra flag</font>
+00228 <font class="comment"> * array would be necessary.</font>
+00229 <font class="comment"> */</font>
+00230
+00231 ulg opt_len; <font class="comment">/* bit length of current block with optimal trees */</font>
+00232 ulg static_len; <font class="comment">/* bit length of current block with static trees */</font>
+00233 uInt matches; <font class="comment">/* number of string matches in current block */</font>
+00234 <font class="keywordtype">int</font> last_eob_len; <font class="comment">/* bit length of EOB code for last block */</font>
+00235
+00236 <font class="preprocessor">#ifdef DEBUG</font>
+00237 <font class="preprocessor"></font> ulg compressed_len; <font class="comment">/* total bit length of compressed file mod 2^32 */</font>
+00238 ulg bits_sent; <font class="comment">/* bit length of compressed data sent mod 2^32 */</font>
+00239 <font class="preprocessor">#endif</font>
+00240 <font class="preprocessor"></font>
+00241 ush bi_buf;
+00242 <font class="comment">/* Output buffer. bits are inserted starting at the bottom (least</font>
+00243 <font class="comment"> * significant bits).</font>
+00244 <font class="comment"> */</font>
+00245 <font class="keywordtype">int</font> bi_valid;
+00246 <font class="comment">/* Number of valid bits in bi_buf. All bits above the last valid bit</font>
+00247 <font class="comment"> * are always zero.</font>
+00248 <font class="comment"> */</font>
+00249
+00250 } FAR deflate_state;
+00251
+00252 <font class="comment">/* Output a byte on the stream.</font>
+00253 <font class="comment"> * IN assertion: there is enough room in pending_buf.</font>
+00254 <font class="comment"> */</font>
+00255 <font class="preprocessor">#define put_byte(s, c) {s-&gt;pending_buf[s-&gt;pending++] = (c);}</font>
+00256 <font class="preprocessor"></font>
+00257
+00258 <font class="preprocessor">#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)</font>
+00259 <font class="preprocessor"></font><font class="comment">/* Minimum amount of lookahead, except at the end of the input file.</font>
+00260 <font class="comment"> * See deflate.c for comments about the MIN_MATCH+1.</font>
+00261 <font class="comment"> */</font>
+00262
+00263 <font class="preprocessor">#define MAX_DIST(s) ((s)-&gt;w_size-MIN_LOOKAHEAD)</font>
+00264 <font class="preprocessor"></font><font class="comment">/* In order to simplify the code, particularly on 16 bit machines, match</font>
+00265 <font class="comment"> * distances are limited to MAX_DIST instead of WSIZE.</font>
+00266 <font class="comment"> */</font>
+00267
+00268 <font class="comment">/* in trees.c */</font>
+00269 <font class="keywordtype">void</font> _tr_init OF((deflate_state *s));
+00270 <font class="keywordtype">int</font> _tr_tally OF((deflate_state *s, <font class="keywordtype">unsigned</font> dist, <font class="keywordtype">unsigned</font> lc));
+00271 <font class="keywordtype">void</font> _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
+00272 <font class="keywordtype">int</font> eof));
+00273 <font class="keywordtype">void</font> _tr_align OF((deflate_state *s));
+00274 <font class="keywordtype">void</font> _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
+00275 <font class="keywordtype">int</font> eof));
+00276
+00277 <font class="preprocessor">#define d_code(dist) \</font>
+00278 <font class="preprocessor"> ((dist) &lt; 256 ? _dist_code[dist] : _dist_code[256+((dist)&gt;&gt;7)])</font>
+00279 <font class="preprocessor"></font><font class="comment">/* Mapping from a distance to a distance code. dist is the distance - 1 and</font>
+00280 <font class="comment"> * must not have side effects. _dist_code[256] and _dist_code[257] are never</font>
+00281 <font class="comment"> * used.</font>
+00282 <font class="comment"> */</font>
+00283
+00284 <font class="preprocessor">#ifndef DEBUG</font>
+00285 <font class="preprocessor"></font><font class="comment">/* Inline versions of _tr_tally for speed: */</font>
+00286
+00287 <font class="preprocessor">#if defined(GEN_TREES_H) || !defined(STDC)</font>
+00288 <font class="preprocessor"></font> <font class="keyword">extern</font> uch _length_code[];
+00289 <font class="keyword">extern</font> uch _dist_code[];
+00290 <font class="preprocessor">#else</font>
+00291 <font class="preprocessor"></font> <font class="keyword">extern</font> <font class="keyword">const</font> uch _length_code[];
+00292 <font class="keyword">extern</font> <font class="keyword">const</font> uch _dist_code[];
+00293 <font class="preprocessor">#endif</font>
+00294 <font class="preprocessor"></font>
+00295 <font class="preprocessor"># define _tr_tally_lit(s, c, flush) \</font>
+00296 <font class="preprocessor"> { uch cc = (c); \</font>
+00297 <font class="preprocessor"> s-&gt;d_buf[s-&gt;last_lit] = 0; \</font>
+00298 <font class="preprocessor"> s-&gt;l_buf[s-&gt;last_lit++] = cc; \</font>
+00299 <font class="preprocessor"> s-&gt;dyn_ltree[cc].Freq++; \</font>
+00300 <font class="preprocessor"> flush = (s-&gt;last_lit == s-&gt;lit_bufsize-1); \</font>
+00301 <font class="preprocessor"> }</font>
+00302 <font class="preprocessor"></font><font class="preprocessor"># define _tr_tally_dist(s, distance, length, flush) \</font>
+00303 <font class="preprocessor"> { uch len = (length); \</font>
+00304 <font class="preprocessor"> ush dist = (distance); \</font>
+00305 <font class="preprocessor"> s-&gt;d_buf[s-&gt;last_lit] = dist; \</font>
+00306 <font class="preprocessor"> s-&gt;l_buf[s-&gt;last_lit++] = len; \</font>
+00307 <font class="preprocessor"> dist--; \</font>
+00308 <font class="preprocessor"> s-&gt;dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \</font>
+00309 <font class="preprocessor"> s-&gt;dyn_dtree[d_code(dist)].Freq++; \</font>
+00310 <font class="preprocessor"> flush = (s-&gt;last_lit == s-&gt;lit_bufsize-1); \</font>
+00311 <font class="preprocessor"> }</font>
+00312 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00313 <font class="preprocessor"></font><font class="preprocessor"># define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)</font>
+00314 <font class="preprocessor"></font><font class="preprocessor"># define _tr_tally_dist(s, distance, length, flush) \</font>
+00315 <font class="preprocessor"> flush = _tr_tally(s, distance, length) </font>
+00316 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00317 <font class="preprocessor"></font>
+00318 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/defs_8h-source.html b/doc/api-documentation/html/defs_8h-source.html
new file mode 100644
index 0000000..5cd9a9b
--- /dev/null
+++ b/doc/api-documentation/html/defs_8h-source.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>defs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>defs.h</h1><div class="fragment"><pre>00001 <font class="comment">// ----------------------------------------------------------------------------</font>
+00002 <font class="comment">// Making or using sword as a Windows DLL</font>
+00003 <font class="comment">// ----------------------------------------------------------------------------</font>
+00004
+00005 <font class="preprocessor">#if defined(__SWMSW__)</font>
+00006 <font class="preprocessor"></font>
+00007 <font class="comment">// _declspec works in BC++ 5 and later, as well as VC++</font>
+00008 <font class="preprocessor">#if defined(_MSC_VER)</font>
+00009 <font class="preprocessor"></font>
+00010 <font class="preprocessor"># ifdef SWMAKINGDLL</font>
+00011 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT _declspec( dllexport )</font>
+00012 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) _declspec( dllexport ) type</font>
+00013 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00014 <font class="preprocessor"></font><font class="preprocessor"># elif defined(SWUSINGDLL)</font>
+00015 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT _declspec( dllimport )</font>
+00016 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) _declspec( dllimport ) type</font>
+00017 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00018 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00019 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT</font>
+00020 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) type</font>
+00021 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00022 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#elif defined(__SWPM__)</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor"># ifdef SWMAKINGDLL</font>
+00027 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT _Export</font>
+00028 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) _Export type</font>
+00029 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00030 <font class="preprocessor"></font><font class="preprocessor"># elif defined(SWUSINGDLL)</font>
+00031 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT _Export</font>
+00032 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) _Export type</font>
+00033 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00034 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00035 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT</font>
+00036 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) type</font>
+00037 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00038 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00039 <font class="preprocessor"></font>
+00040 <font class="preprocessor">#elif defined(__GNUWIN32__) || defined(__BORLANDC__)</font>
+00041 <font class="preprocessor"></font>
+00042 <font class="preprocessor"># ifdef SWMAKINGDLL</font>
+00043 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT __declspec( dllexport )</font>
+00044 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) __declspec( dllexport ) type</font>
+00045 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00046 <font class="preprocessor"></font><font class="preprocessor"># elif defined(SWUSINGDLL)</font>
+00047 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT __declspec( dllimport )</font>
+00048 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) __declspec( dllimport ) type</font>
+00049 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00050 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00051 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT</font>
+00052 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) type</font>
+00053 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00054 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00055 <font class="preprocessor"></font>
+00056
+00057 <font class="preprocessor">#else</font>
+00058 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT</font>
+00059 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) type</font>
+00060 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00061 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00062 <font class="preprocessor"></font>
+00063 <font class="preprocessor">#else // !Windows</font>
+00064 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT</font>
+00065 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_DATA(type) type</font>
+00066 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLEXPORT_CTORFN</font>
+00067 <font class="preprocessor"></font><font class="preprocessor">#endif // Win/!Win</font>
+00068 <font class="preprocessor"></font>
+00069 <font class="comment">// For ostream, istream ofstream</font>
+00070 <font class="preprocessor">#if defined(__BORLANDC__) &amp;&amp; defined( _RTLDLL )</font>
+00071 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLIMPORT __import</font>
+00072 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00073 <font class="preprocessor"></font><font class="preprocessor"># define SWDLLIMPORT</font>
+00074 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/dirent_8cpp-source.html b/doc/api-documentation/html/dirent_8cpp-source.html
new file mode 100644
index 0000000..415026e
--- /dev/null
+++ b/doc/api-documentation/html/dirent_8cpp-source.html
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>dirent.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>dirent.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"></font>
+00003 <font class="comment"> Implementation of POSIX directory browsing functions and types for Win32.</font>
+00004 <font class="comment"></font>
+00005 <font class="comment"> Kevlin Henney (mailto:kevlin@acm.org), March 1997.</font>
+00006 <font class="comment"></font>
+00007 <font class="comment"> Copyright Kevlin Henney, 1997. All rights reserved.</font>
+00008 <font class="comment"></font>
+00009 <font class="comment"> Permission to use, copy, modify, and distribute this software and its</font>
+00010 <font class="comment"> documentation for any purpose is hereby granted without fee, provided</font>
+00011 <font class="comment"> that this copyright and permissions notice appear in all copies and</font>
+00012 <font class="comment"> derivatives, and that no charge may be made for the software and its</font>
+00013 <font class="comment"> documentation except to cover cost of distribution.</font>
+00014 <font class="comment"> </font>
+00015 <font class="comment"> This software is supplied "as is" without express or implied warranty.</font>
+00016 <font class="comment"></font>
+00017 <font class="comment"> But that said, if there are any problems please get in touch.</font>
+00018 <font class="comment"></font>
+00019 <font class="comment">*/</font>
+00020
+00021 <font class="preprocessor">#include &lt;dirent.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00023 <font class="preprocessor">#include &lt;io.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00026
+00027 <font class="keyword">struct </font>DIR
+00028 {
+00029 <font class="keywordtype">long</font> handle; <font class="comment">/* -1 for failed rewind */</font>
+00030 <font class="keyword">struct </font>_finddata_t info;
+00031 <font class="keyword">struct </font>dirent result; <font class="comment">/* d_name null iff first time */</font>
+00032 <font class="keywordtype">char</font> *name; <font class="comment">/* NTBS */</font>
+00033 };
+00034
+00035 DIR *opendir(<font class="keyword">const</font> <font class="keywordtype">char</font> *name)
+00036 {
+00037 DIR *dir = 0;
+00038
+00039 <font class="keywordflow">if</font>(name &amp;&amp; name[0])
+00040 {
+00041 size_t base_length = strlen(name);
+00042 <font class="keyword">const</font> <font class="keywordtype">char</font> *all = <font class="comment">/* the root directory is a special case... */</font>
+00043 strchr(<font class="stringliteral">"/\\"</font>, name[base_length - 1]) ? <font class="stringliteral">"*"</font> : <font class="stringliteral">"/*"</font>;
+00044
+00045 <font class="keywordflow">if</font>((dir = (DIR *) malloc(<font class="keyword">sizeof</font> *dir)) != 0 &amp;&amp;
+00046 (dir-&gt;name = (<font class="keywordtype">char</font> *) malloc(base_length + strlen(all) + 1)) != 0)
+00047 {
+00048 strcat(strcpy(dir-&gt;name, name), all);
+00049
+00050 <font class="keywordflow">if</font>((dir-&gt;handle = _findfirst(dir-&gt;name, &amp;dir-&gt;info)) != -1)
+00051 {
+00052 dir-&gt;result.d_name = 0;
+00053 }
+00054 <font class="keywordflow">else</font> <font class="comment">/* rollback */</font>
+00055 {
+00056 free(dir-&gt;name);
+00057 free(dir);
+00058 dir = 0;
+00059 }
+00060 }
+00061 <font class="keywordflow">else</font> <font class="comment">/* rollback */</font>
+00062 {
+00063 free(dir);
+00064 dir = 0;
+00065 errno = ENOMEM;
+00066 }
+00067 }
+00068 <font class="keywordflow">else</font>
+00069 {
+00070 errno = EINVAL;
+00071 }
+00072
+00073 <font class="keywordflow">return</font> dir;
+00074 }
+00075
+00076 <font class="keywordtype">int</font> closedir(DIR *dir)
+00077 {
+00078 <font class="keywordtype">int</font> result = -1;
+00079
+00080 <font class="keywordflow">if</font>(dir)
+00081 {
+00082 <font class="keywordflow">if</font>(dir-&gt;handle != -1)
+00083 {
+00084 result = _findclose(dir-&gt;handle);
+00085 }
+00086
+00087 free(dir-&gt;name);
+00088 free(dir);
+00089 }
+00090
+00091 <font class="keywordflow">if</font>(result == -1) <font class="comment">/* map all errors to EBADF */</font>
+00092 {
+00093 errno = EBADF;
+00094 }
+00095
+00096 <font class="keywordflow">return</font> result;
+00097 }
+00098
+00099 <font class="keyword">struct </font>dirent *readdir(DIR *dir)
+00100 {
+00101 <font class="keyword">struct </font>dirent *result = 0;
+00102
+00103 <font class="keywordflow">if</font>(dir &amp;&amp; dir-&gt;handle != -1)
+00104 {
+00105 <font class="keywordflow">if</font>(!dir-&gt;result.d_name || _findnext(dir-&gt;handle, &amp;dir-&gt;info) != -1)
+00106 {
+00107 result = &amp;dir-&gt;result;
+00108 result-&gt;d_name = dir-&gt;info.name;
+00109 }
+00110 }
+00111 <font class="keywordflow">else</font>
+00112 {
+00113 errno = EBADF;
+00114 }
+00115
+00116 <font class="keywordflow">return</font> result;
+00117 }
+00118
+00119 <font class="keywordtype">void</font> rewinddir(DIR *dir)
+00120 {
+00121 <font class="keywordflow">if</font>(dir &amp;&amp; dir-&gt;handle != -1)
+00122 {
+00123 _findclose(dir-&gt;handle);
+00124 dir-&gt;handle = _findfirst(dir-&gt;name, &amp;dir-&gt;info);
+00125 dir-&gt;result.d_name = 0;
+00126 }
+00127 <font class="keywordflow">else</font>
+00128 {
+00129 errno = EBADF;
+00130 }
+00131 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/dirent_8h-source.html b/doc/api-documentation/html/dirent_8h-source.html
new file mode 100644
index 0000000..d65109d
--- /dev/null
+++ b/doc/api-documentation/html/dirent_8h-source.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>dirent.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>dirent.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"></font>
+00003 <font class="comment"> Declaration of POSIX directory browsing functions and types for Win32.</font>
+00004 <font class="comment"></font>
+00005 <font class="comment"> Kevlin Henney (mailto:kevlin@acm.org), March 1997.</font>
+00006 <font class="comment"></font>
+00007 <font class="comment"> Copyright Kevlin Henney, 1997. All rights reserved.</font>
+00008 <font class="comment"></font>
+00009 <font class="comment"> Permission to use, copy, modify, and distribute this software and its</font>
+00010 <font class="comment"> documentation for any purpose is hereby granted without fee, provided</font>
+00011 <font class="comment"> that this copyright and permissions notice appear in all copies and</font>
+00012 <font class="comment"> derivatives, and that no charge may be made for the software and its</font>
+00013 <font class="comment"> documentation except to cover cost of distribution.</font>
+00014 <font class="comment"> </font>
+00015 <font class="comment">*/</font>
+00016
+00017 <font class="preprocessor">#ifndef DIRENT_INCLUDED</font>
+00018 <font class="preprocessor"></font><font class="preprocessor">#define DIRENT_INCLUDED</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="keyword">typedef</font> <font class="keyword">struct </font>DIR DIR;
+00021
+00022 <font class="keyword">struct </font>dirent
+00023 {
+00024 <font class="keywordtype">char</font> *d_name;
+00025 };
+00026
+00027 DIR *opendir(<font class="keyword">const</font> <font class="keywordtype">char</font> *);
+00028 <font class="keywordtype">int</font> closedir(DIR *);
+00029 <font class="keyword">struct </font>dirent *readdir(DIR *);
+00030 <font class="keywordtype">void</font> rewinddir(DIR *);
+00031
+00032 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/doxygen.css b/doc/api-documentation/html/doxygen.css
new file mode 100644
index 0000000..841f709
--- /dev/null
+++ b/doc/api-documentation/html/doxygen.css
@@ -0,0 +1,49 @@
+H1 { text-align: center; }
+CAPTION { font-weight: bold }
+A.qindex {}
+A.qindexRef {}
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code { text-decoration: none; font-weight: normal; color: #4444ee }
+A.codeRef { font-weight: normal; color: #4444ee }
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: #f2f2ff; font-weight: bold; }
+TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
+BODY { background: white }
+TD.indexkey {
+ background-color: #eeeeff;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+TD.indexvalue {
+ background-color: #eeeeff;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+FONT.keyword { color: #008000 }
+FONT.keywordtype { color: #604020 }
+FONT.keywordflow { color: #e08000 }
+FONT.comment { color: #800000 }
+FONT.preprocessor { color: #806020 }
+FONT.stringliteral { color: #002080 }
+FONT.charliteral { color: #008080 }
diff --git a/doc/api-documentation/html/doxygen.png b/doc/api-documentation/html/doxygen.png
new file mode 100644
index 0000000..96ae72c
--- /dev/null
+++ b/doc/api-documentation/html/doxygen.png
Binary files differ
diff --git a/doc/api-documentation/html/echomod_8cpp-source.html b/doc/api-documentation/html/echomod_8cpp-source.html
new file mode 100644
index 0000000..b844308
--- /dev/null
+++ b/doc/api-documentation/html/echomod_8cpp-source.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>echomod.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>echomod.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * echomod.cpp - code for class 'echomod'- a dummy test text module that just</font>
+00003 <font class="comment"> * echos back the key</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;echomod.h&gt;</font>
+00007
+00008
+00009 EchoMod::EchoMod() : <a class="code" href="class_s_w_text.html">SWText</a>("echomod", "Echos back key")
+00010 {
+00011 }
+00012
+00013
+00014 EchoMod::~EchoMod() {
+00015 }
+00016
+00017
+00018 EchoMod::operator const char*()
+00019 {
+00020 <font class="keywordflow">return</font> *key;
+00021 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/echomod_8h-source.html b/doc/api-documentation/html/echomod_8h-source.html
new file mode 100644
index 0000000..25c1475
--- /dev/null
+++ b/doc/api-documentation/html/echomod_8h-source.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>echomod.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>echomod.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * echomod.h - code for class 'EchoMod' - a test module that just echo back</font>
+00003 <font class="comment"> * text of key.</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: echomod_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef ECHOMOD_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define ECHOMOD_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swtext.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00028
+00029 <font class="keyword">class </font>EchoMod:<font class="keyword">public</font> <a class="code" href="class_s_w_text.html">SWText</a>
+00030 {
+00031 <font class="keyword">public</font>:
+00032 EchoMod ();
+00033 <font class="keyword">virtual</font> ~ EchoMod ();
+00034 <font class="keyword">virtual</font> operator const char *();
+00035 };
+00036
+00037
+00038 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/encfiltmgr_8cpp-source.html b/doc/api-documentation/html/encfiltmgr_8cpp-source.html
new file mode 100644
index 0000000..caa1466
--- /dev/null
+++ b/doc/api-documentation/html/encfiltmgr_8cpp-source.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>encfiltmgr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>encfiltmgr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swencodingmgr.cpp - implementaion of class EncodingFilterMgr, subclass of</font>
+00003 <font class="comment"> * used to transcode all module text to a requested</font>
+00004 <font class="comment"> * encoding.</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#include &lt;encfiltmgr.h&gt;</font>
+00023
+00024 <font class="preprocessor">#include &lt;scsuutf8.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;latin1utf8.h&gt;</font>
+00026
+00027 <font class="preprocessor">#include &lt;unicodertf.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;utf8latin1.h&gt;</font>
+00029 <font class="preprocessor">#include &lt;utf8utf16.h&gt;</font>
+00030 <font class="preprocessor">#include &lt;utf8html.h&gt;</font>
+00031
+00032 <font class="preprocessor">#include &lt;swmgr.h&gt;</font>
+00033
+00034 <font class="comment">/******************************************************************************</font>
+00035 <font class="comment"> * EncodingFilterMgr Constructor - initializes instance of EncodingFilterMgr</font>
+00036 <font class="comment"> *</font>
+00037 <font class="comment"> * ENT:</font>
+00038 <font class="comment"> * enc - Encoding format to emit</font>
+00039 <font class="comment"> */</font>
+00040
+<a name="l00041"></a><a class="code" href="class_encoding_filter_mgr.html#a0">00041</a> <a class="code" href="class_encoding_filter_mgr.html#a0">EncodingFilterMgr::EncodingFilterMgr</a> (<font class="keywordtype">char</font> enc)
+00042 : SWFilterMgr() {
+00043
+00044 scsuutf8 = <font class="keyword">new</font> <a class="code" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>();
+00045 latin1utf8 = <font class="keyword">new</font> <a class="code" href="class_latin1_u_t_f8.html">Latin1UTF8</a>();
+00046
+00047 encoding = enc;
+00048
+00049 <font class="keywordflow">switch</font> (encoding) {
+00050 <font class="keywordflow">case</font> ENC_LATIN1:
+00051 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_latin1.html">UTF8Latin1</a>();
+00052 <font class="keywordflow">break</font>;
+00053 <font class="keywordflow">case</font> ENC_UTF16:
+00054 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>();
+00055 <font class="keywordflow">break</font>;
+00056 <font class="keywordflow">case</font> ENC_RTF:
+00057 targetenc = <font class="keyword">new</font> <a class="code" href="class_unicode_r_t_f.html">UnicodeRTF</a>();
+00058 <font class="keywordflow">break</font>;
+00059 <font class="keywordflow">case</font> ENC_HTML:
+00060 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>();
+00061 <font class="keywordflow">break</font>;
+00062 <font class="keywordflow">default</font>: <font class="comment">// i.e. case ENC_UTF8</font>
+00063 targetenc = NULL;
+00064 }
+00065 }
+00066
+00067 <font class="comment">/******************************************************************************</font>
+00068 <font class="comment"> * EncodingFilterMgr Destructor - Cleans up instance of EncodingFilterMgr</font>
+00069 <font class="comment"> */</font>
+<a name="l00070"></a><a class="code" href="class_encoding_filter_mgr.html#a1">00070</a> <a class="code" href="class_encoding_filter_mgr.html#a1">EncodingFilterMgr::~EncodingFilterMgr</a>() {
+00071 <font class="keywordflow">if</font> (scsuutf8)
+00072 <font class="keyword">delete</font> scsuutf8;
+00073 <font class="keywordflow">if</font> (latin1utf8)
+00074 <font class="keyword">delete</font> latin1utf8;
+00075 <font class="keywordflow">if</font> (targetenc)
+00076 <font class="keyword">delete</font> targetenc;
+00077 }
+00078
+<a name="l00079"></a><a class="code" href="class_encoding_filter_mgr.html#a3">00079</a> <font class="keywordtype">void</font> <a class="code" href="class_encoding_filter_mgr.html#a3">EncodingFilterMgr::AddRawFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section) {
+00080
+00081 ConfigEntMap::iterator entry;
+00082
+00083 string encoding = ((entry = section.find(<font class="stringliteral">"Encoding"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00084 <font class="keywordflow">if</font> (encoding.empty() || !stricmp(encoding.c_str(), <font class="stringliteral">"Latin-1"</font>)) {
+00085 module-&gt;<a class="code" href="class_s_w_module.html#a51">AddRawFilter</a>(latin1utf8);
+00086 }
+00087 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(encoding.c_str(), <font class="stringliteral">"SCSU"</font>)) {
+00088 module-&gt;<a class="code" href="class_s_w_module.html#a51">AddRawFilter</a>(scsuutf8);
+00089 }
+00090 }
+00091
+<a name="l00092"></a><a class="code" href="class_encoding_filter_mgr.html#a4">00092</a> <font class="keywordtype">void</font> <a class="code" href="class_encoding_filter_mgr.html#a4">EncodingFilterMgr::AddEncodingFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section) {
+00093 <font class="keywordflow">if</font> (targetenc)
+00094 module-&gt;<a class="code" href="class_s_w_module.html#a45">AddEncodingFilter</a>(targetenc);
+00095 }
+00096
+00097 <font class="comment">/******************************************************************************</font>
+00098 <font class="comment"> * EncodingFilterMgr::Encoding - sets/gets encoding</font>
+00099 <font class="comment"> *</font>
+00100 <font class="comment"> * ENT: enc - new encoding or 0 to simply get the current encoding</font>
+00101 <font class="comment"> *</font>
+00102 <font class="comment"> * RET: encoding</font>
+00103 <font class="comment"> */</font>
+<a name="l00104"></a><a class="code" href="class_encoding_filter_mgr.html#a2">00104</a> <font class="keywordtype">char</font> <a class="code" href="class_encoding_filter_mgr.html#a2">EncodingFilterMgr::Encoding</a>(<font class="keywordtype">char</font> enc) {
+00105 <font class="keywordflow">if</font> (enc &amp;&amp; enc != encoding) {
+00106 encoding = enc;
+00107 SWFilter * oldfilter = targetenc;
+00108
+00109 <font class="keywordflow">switch</font> (encoding) {
+00110 <font class="keywordflow">case</font> ENC_LATIN1:
+00111 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_latin1.html">UTF8Latin1</a>();
+00112 <font class="keywordflow">break</font>;
+00113 <font class="keywordflow">case</font> ENC_UTF16:
+00114 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>();
+00115 <font class="keywordflow">break</font>;
+00116 <font class="keywordflow">case</font> ENC_RTF:
+00117 targetenc = <font class="keyword">new</font> <a class="code" href="class_unicode_r_t_f.html">UnicodeRTF</a>();
+00118 <font class="keywordflow">break</font>;
+00119 <font class="keywordflow">case</font> ENC_HTML:
+00120 targetenc = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>();
+00121 <font class="keywordflow">break</font>;
+00122 <font class="keywordflow">default</font>: <font class="comment">// i.e. case ENC_UTF8</font>
+00123 targetenc = NULL;
+00124 }
+00125
+00126 ModMap::const_iterator module;
+00127
+00128 <font class="keywordflow">if</font> (oldfilter != targetenc) {
+00129 <font class="keywordflow">if</font> (oldfilter) {
+00130 <font class="keywordflow">if</font> (!targetenc) {
+00131 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00132 module-&gt;second-&gt;RemoveRenderFilter(oldfilter);
+00133 }
+00134 <font class="keywordflow">else</font> {
+00135 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00136 module-&gt;second-&gt;ReplaceRenderFilter(oldfilter, targetenc);
+00137 }
+00138 <font class="keyword">delete</font> oldfilter;
+00139 }
+00140 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (targetenc) {
+00141 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00142 module-&gt;second-&gt;AddRenderFilter(targetenc);
+00143 }
+00144 }
+00145
+00146 }
+00147 <font class="keywordflow">return</font> encoding;
+00148 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/encfiltmgr_8h-source.html b/doc/api-documentation/html/encfiltmgr_8h-source.html
new file mode 100644
index 0000000..38e7ee3
--- /dev/null
+++ b/doc/api-documentation/html/encfiltmgr_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>encfiltmgr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>encfiltmgr.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swencodingmgr.h - definition of class SWEncodingMgr, subclass of</font>
+00003 <font class="comment"> * used to transcode all module text to a requested</font>
+00004 <font class="comment"> * markup.</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef ENCFILTERMGR_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define ENCFILTERMGR_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;swfiltermgr.h&gt;</font>
+00026
+00027
+<a name="l00033"></a><a class="code" href="class_encoding_filter_mgr.html">00033</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a> : <font class="keyword">public</font> SWFilterMgr {
+00034
+00035 <font class="keyword">protected</font>:
+00036 SWFilter *latin1utf8;
+00037 SWFilter *scsuutf8;
+00038 SWFilter *targetenc;
+00039
+00040
+00041 <font class="comment">/*</font>
+00042 <font class="comment"> * current encoding value</font>
+00043 <font class="comment"> */</font>
+00044 <font class="keywordtype">char</font> encoding;
+00045
+00046 <font class="keyword">public</font>:
+00047
+00048
+00056 <a class="code" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a> (<font class="keywordtype">char</font> encoding = ENC_UTF8);
+00057
+00061 ~<a class="code" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>();
+00062
+00068 <font class="keywordtype">char</font> Encoding(<font class="keywordtype">char</font> enc);
+00069
+00075 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddRawFilters(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section);
+00076
+00082 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddEncodingFilters(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section);
+00083 };
+00084
+00085 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/entriesblk_8cpp-source.html b/doc/api-documentation/html/entriesblk_8cpp-source.html
new file mode 100644
index 0000000..61cc452
--- /dev/null
+++ b/doc/api-documentation/html/entriesblk_8cpp-source.html
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>entriesblk.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>entriesblk.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;entriesblk.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00003 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00004
+00005 <font class="keyword">const</font> <font class="keywordtype">int</font> EntriesBlock::METAHEADERSIZE = 4;
+00006 <font class="comment">// count(4);</font>
+00007 <font class="keyword">const</font> <font class="keywordtype">int</font> EntriesBlock::METAENTRYSIZE = 8;
+00008 <font class="comment">// offset(4); size(4);</font>
+00009
+00010 EntriesBlock::EntriesBlock(<font class="keyword">const</font> <font class="keywordtype">char</font> *iBlock, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size) {
+00011 block = (<font class="keywordtype">char</font> *)calloc(1, size);
+00012 memcpy(block, iBlock, size);
+00013 }
+00014
+00015
+00016 EntriesBlock::EntriesBlock() {
+00017 block = (<font class="keywordtype">char</font> *)calloc(1, <font class="keyword">sizeof</font>(__u32));
+00018 }
+00019
+00020
+00021 EntriesBlock::~EntriesBlock() {
+00022 free(block);
+00023 }
+00024
+00025
+00026 <font class="keywordtype">void</font> EntriesBlock::setCount(<font class="keywordtype">int</font> count) {
+00027 __u32 rawCount = archtosword32(count);
+00028 memcpy(block, &amp;rawCount, <font class="keyword">sizeof</font>(__u32));
+00029 }
+00030
+00031
+00032 <font class="keywordtype">int</font> EntriesBlock::getCount() {
+00033 __u32 count = 0;
+00034 memcpy(&amp;count, block, <font class="keyword">sizeof</font>(__u32));
+00035 count = swordtoarch32(count);
+00036 <font class="keywordflow">return</font> count;
+00037 }
+00038
+00039
+00040 <font class="keywordtype">void</font> EntriesBlock::getMetaEntry(<font class="keywordtype">int</font> index, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *offset, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *size) {
+00041 __u32 rawOffset = 0;
+00042 __u32 rawSize = 0;
+00043 *offset = 0;
+00044 *size = 0;
+00045 <font class="keywordflow">if</font> (index &gt;= getCount()) <font class="comment">// assert index &lt; count</font>
+00046 <font class="keywordflow">return</font>;
+00047
+00048 <font class="comment">// first 4 bytes is count, each 6 bytes after is each meta entry</font>
+00049 memcpy(&amp;rawOffset, block + METAHEADERSIZE + (index * METAENTRYSIZE), <font class="keyword">sizeof</font>(rawOffset));
+00050 memcpy(&amp;rawSize, block + METAHEADERSIZE + (index * METAENTRYSIZE) + <font class="keyword">sizeof</font>(rawOffset), <font class="keyword">sizeof</font>(rawSize));
+00051
+00052 *offset = (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>)swordtoarch32(rawOffset);
+00053 *size = (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>)swordtoarch32(rawSize);
+00054 }
+00055
+00056
+00057 <font class="keywordtype">void</font> EntriesBlock::setMetaEntry(<font class="keywordtype">int</font> index, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size) {
+00058 __u32 rawOffset = archtosword32(offset);
+00059 __u32 rawSize = archtosword32(size);
+00060
+00061 <font class="keywordflow">if</font> (index &gt;= getCount()) <font class="comment">// assert index &lt; count</font>
+00062 <font class="keywordflow">return</font>;
+00063
+00064 <font class="comment">// first 4 bytes is count, each 6 bytes after is each meta entry</font>
+00065 memcpy(block + METAHEADERSIZE + (index * METAENTRYSIZE), &amp;rawOffset, <font class="keyword">sizeof</font>(rawOffset));
+00066 memcpy(block + METAHEADERSIZE + (index * METAENTRYSIZE) + <font class="keyword">sizeof</font>(rawOffset), &amp;rawSize, <font class="keyword">sizeof</font>(rawSize));
+00067 }
+00068
+00069
+00070 <font class="keyword">const</font> <font class="keywordtype">char</font> *EntriesBlock::getRawData(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *retSize) {
+00071 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> max = 4;
+00072 <font class="keywordtype">int</font> loop;
+00073 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset;
+00074 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size;
+00075 <font class="keywordflow">for</font> (loop = 0; loop &lt; getCount(); loop++) {
+00076 getMetaEntry(loop, &amp;offset, &amp;size);
+00077 max = ((offset + size) &gt; max) ? (offset + size) : max;
+00078 }
+00079 *retSize = max;
+00080 <font class="keywordflow">return</font> block;
+00081 }
+00082
+00083
+00084 <font class="keywordtype">int</font> EntriesBlock::addEntry(<font class="keyword">const</font> <font class="keywordtype">char</font> *entry) {
+00085 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> dataSize;
+00086 getRawData(&amp;dataSize);
+00087 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len = strlen(entry);
+00088 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset;
+00089 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size;
+00090 <font class="keywordtype">int</font> count = getCount();
+00091 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> dataStart = METAHEADERSIZE + (count * METAENTRYSIZE);
+00092 <font class="comment">// new meta entry + new data size + 1 because null </font>
+00093 block = (<font class="keywordtype">char</font> *)realloc(block, dataSize + METAENTRYSIZE + len + 1);
+00094 <font class="comment">// shift right to make room for new meta entry</font>
+00095 memmove(block + dataStart + METAENTRYSIZE, block + dataStart, dataSize - dataStart);
+00096
+00097 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> loop = 0; loop &lt; count; loop++) {
+00098 getMetaEntry(loop, &amp;offset, &amp;size);
+00099 <font class="keywordflow">if</font> (offset) { <font class="comment">// if not a deleted entry</font>
+00100 offset += METAENTRYSIZE;
+00101 setMetaEntry(loop, offset, size);
+00102 }
+00103 }
+00104
+00105 offset = dataSize; <font class="comment">// original dataSize before realloc</font>
+00106 size = len + 1;
+00107 <font class="comment">// add our text to the end</font>
+00108 memcpy(block + offset + METAENTRYSIZE, entry, size);
+00109 <font class="comment">// increment count</font>
+00110 setCount(count + 1);
+00111 <font class="comment">// add our meta entry</font>
+00112 setMetaEntry(count, offset + METAENTRYSIZE, size);
+00113 <font class="comment">// return index of our new entry</font>
+00114 <font class="keywordflow">return</font> count;
+00115 }
+00116
+00117
+00118 <font class="keyword">const</font> <font class="keywordtype">char</font> *EntriesBlock::getEntry(<font class="keywordtype">int</font> entryIndex) {
+00119 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset;
+00120 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size;
+00121 <font class="keyword">static</font> <font class="keywordtype">char</font> *empty = <font class="stringliteral">""</font>;
+00122
+00123 getMetaEntry(entryIndex, &amp;offset, &amp;size);
+00124 <font class="keywordflow">return</font> (offset) ? block+offset : empty;
+00125 }
+00126
+00127
+00128 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> EntriesBlock::getEntrySize(<font class="keywordtype">int</font> entryIndex) {
+00129 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset;
+00130 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size;
+00131
+00132 getMetaEntry(entryIndex, &amp;offset, &amp;size);
+00133 <font class="keywordflow">return</font> (offset) ? size : 0;
+00134 }
+00135
+00136
+00137 <font class="keywordtype">void</font> EntriesBlock::removeEntry(<font class="keywordtype">int</font> entryIndex) {
+00138 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset;
+00139 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size, size2;
+00140 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> dataSize;
+00141 getRawData(&amp;dataSize);
+00142 getMetaEntry(entryIndex, &amp;offset, &amp;size);
+00143 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len = size - 1;
+00144 <font class="keywordtype">int</font> count = getCount();
+00145 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> dataStart = METAHEADERSIZE + (count * METAENTRYSIZE);
+00146
+00147 <font class="keywordflow">if</font> (!offset) <font class="comment">// already deleted</font>
+00148 <font class="keywordflow">return</font>;
+00149
+00150 <font class="comment">// shift left to retrieve space used for old entry</font>
+00151 memmove(block + offset, block + offset + size, dataSize - (offset + size));
+00152
+00153 <font class="comment">// fix offset for all entries after our entry that were shifted left</font>
+00154 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> loop = entryIndex + 1; loop &lt; count; loop++) {
+00155 getMetaEntry(loop, &amp;offset, &amp;size2);
+00156 <font class="keywordflow">if</font> (offset) { <font class="comment">// if not a deleted entry</font>
+00157 offset -= size;
+00158 setMetaEntry(loop, offset, size2);
+00159 }
+00160 }
+00161
+00162 <font class="comment">// zero out our meta entry</font>
+00163 setMetaEntry(entryIndex, 0L, 0);
+00164 }
+00165
+00166
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/entriesblk_8h-source.html b/doc/api-documentation/html/entriesblk_8h-source.html
new file mode 100644
index 0000000..59b0a5d
--- /dev/null
+++ b/doc/api-documentation/html/entriesblk_8h-source.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>entriesblk.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>entriesblk.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef ENTRIESBLK_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define ENTRIESBLK_H</font>
+00003 <font class="preprocessor"></font>
+00004 <font class="preprocessor">#include &lt;sysdata.h&gt;</font>
+00005
+00006 <font class="keyword">class </font>EntriesBlock {
+00007 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">int</font> METAHEADERSIZE;
+00008 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">int</font> METAENTRYSIZE;
+00009
+00010 <font class="keyword">private</font>:
+00011 <font class="keywordtype">char</font> *block;
+00012 <font class="keywordtype">void</font> setCount(<font class="keywordtype">int</font> count);
+00013 <font class="keywordtype">void</font> getMetaEntry(<font class="keywordtype">int</font> index, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *offset, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *size);
+00014 <font class="keywordtype">void</font> setMetaEntry(<font class="keywordtype">int</font> index, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size);
+00015
+00016 <font class="keyword">public</font>:
+00017 EntriesBlock(<font class="keyword">const</font> <font class="keywordtype">char</font> *iBlock, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size);
+00018 EntriesBlock();
+00019 ~EntriesBlock();
+00020
+00021 <font class="keywordtype">int</font> getCount();
+00022 <font class="keywordtype">int</font> addEntry(<font class="keyword">const</font> <font class="keywordtype">char</font> *entry);
+00023 <font class="keyword">const</font> <font class="keywordtype">char</font> *getEntry(<font class="keywordtype">int</font> entryIndex);
+00024 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getEntrySize(<font class="keywordtype">int</font> entryIndex);
+00025 <font class="keywordtype">void</font> removeEntry(<font class="keywordtype">int</font> entryIndex);
+00026 <font class="keyword">const</font> <font class="keywordtype">char</font> *getRawData(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *size);
+00027 };
+00028
+00029
+00030 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/femain_8cpp-source.html b/doc/api-documentation/html/femain_8cpp-source.html
new file mode 100644
index 0000000..d58a831
--- /dev/null
+++ b/doc/api-documentation/html/femain_8cpp-source.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>femain.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>femain.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;femain.h&gt;</font>
+00002
+00003 FEMain::FEMain() {
+00004 }
+00005
+00006 FEMain::~FEMain() {
+00007 list &lt;SWDisplay *&gt;::iterator it;
+00008
+00009 <font class="keywordflow">for</font> (it = displays.begin(); it != displays.end(); it++)
+00010 <font class="keyword">delete</font> *it;
+00011
+00012 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/femain_8h-source.html b/doc/api-documentation/html/femain_8h-source.html
new file mode 100644
index 0000000..ec1cadf
--- /dev/null
+++ b/doc/api-documentation/html/femain_8h-source.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>femain.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>femain.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: femain_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef FEMAIN_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define FEMAIN_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="keyword">class </font>FEMain
+00025 {
+00026 <font class="keyword">public</font>:
+00027 FEMain ();
+00028 <font class="keyword">virtual</font> ~FEMain ();
+00029 list &lt; SWDisplay * &gt;displays; <font class="comment">// so we can delete each display we create</font>
+00030 };
+00031
+00032 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/filemgr_8cpp-source.html b/doc/api-documentation/html/filemgr_8cpp-source.html
new file mode 100644
index 0000000..b807e94
--- /dev/null
+++ b/doc/api-documentation/html/filemgr_8cpp-source.html
@@ -0,0 +1,278 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>filemgr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>filemgr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * filemgr.cpp - implementation of class FileMgr used for pooling file</font>
+00003 <font class="comment"> * handles</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: filemgr_8cpp-source.html,v 1.3 2002/06/20 20:23:08 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;utilstr.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;dirent.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;sys/stat.h&gt;</font>
+00029 <font class="preprocessor">#include &lt;sys/types.h&gt;</font>
+00030 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00031 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00032 <font class="preprocessor">#ifndef __GNUC__</font>
+00033 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00034 <font class="preprocessor">#else</font>
+00035 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00036 <font class="preprocessor">#endif</font>
+00037 <font class="preprocessor"></font>
+00038 <font class="comment">// ---------------- statics -----------------</font>
+00039 FileMgr FileMgr::systemFileMgr;
+00040
+00041 <font class="comment">// --------------- end statics --------------</font>
+00042
+00043
+00044 FileDesc::FileDesc(FileMgr *parent, <font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> mode, <font class="keywordtype">int</font> perms, <font class="keywordtype">bool</font> tryDowngrade) {
+00045 this-&gt;parent = parent;
+00046 this-&gt;path = 0;
+00047 stdstr(&amp;this-&gt;path, path);
+00048 this-&gt;mode = mode;
+00049 this-&gt;perms = perms;
+00050 this-&gt;tryDowngrade = tryDowngrade;
+00051 offset = 0;
+00052 fd = -77;
+00053 }
+00054
+00055
+00056 FileDesc::~FileDesc() {
+00057 <font class="keywordflow">if</font> (fd &gt; 0)
+00058 close(fd);
+00059
+00060 <font class="keywordflow">if</font> (path)
+00061 <font class="keyword">delete</font> [] path;
+00062 }
+00063
+00064
+00065 <font class="keywordtype">int</font> FileDesc::getFd() {
+00066 <font class="keywordflow">if</font> (fd == -77)
+00067 fd = parent-&gt;sysOpen(<font class="keyword">this</font>);
+00068 <font class="keywordflow">return</font> fd;
+00069 }
+00070
+00071
+00072 FileMgr::FileMgr(<font class="keywordtype">int</font> maxFiles) {
+00073 this-&gt;maxFiles = maxFiles; <font class="comment">// must be at least 2</font>
+00074 files = 0;
+00075 }
+00076
+00077
+00078 FileMgr::~FileMgr() {
+00079 FileDesc *tmp;
+00080
+00081 <font class="keywordflow">while</font>(files) {
+00082 tmp = files-&gt;next;
+00083 <font class="keyword">delete</font> files;
+00084 files = tmp;
+00085 }
+00086 }
+00087
+00088
+00089 FileDesc *FileMgr::open(<font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> mode, <font class="keywordtype">bool</font> tryDowngrade) {
+00090 <font class="keywordflow">return</font> open(path, mode, S_IREAD | S_IWRITE, tryDowngrade);
+00091 }
+00092
+00093 FileDesc *FileMgr::open(<font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> mode, <font class="keywordtype">int</font> perms, <font class="keywordtype">bool</font> tryDowngrade) {
+00094 FileDesc **tmp, *tmp2;
+00095
+00096 <font class="keywordflow">for</font> (tmp = &amp;files; *tmp; tmp = &amp;((*tmp)-&gt;next)) {
+00097 <font class="keywordflow">if</font> ((*tmp)-&gt;fd &lt; 0) <font class="comment">// insert as first non-system_open file</font>
+00098 <font class="keywordflow">break</font>;
+00099 }
+00100
+00101 tmp2 = <font class="keyword">new</font> FileDesc(<font class="keyword">this</font>, path, mode, perms, tryDowngrade);
+00102 tmp2-&gt;next = *tmp;
+00103 *tmp = tmp2;
+00104
+00105 <font class="keywordflow">return</font> tmp2;
+00106 }
+00107
+00108
+00109 <font class="keywordtype">void</font> FileMgr::close(FileDesc *file) {
+00110 FileDesc **loop;
+00111
+00112 <font class="keywordflow">for</font> (loop = &amp;files; *loop; loop = &amp;((*loop)-&gt;next)) {
+00113 <font class="keywordflow">if</font> (*loop == file) {
+00114 *loop = (*loop)-&gt;next;
+00115 <font class="keyword">delete</font> file;
+00116 <font class="keywordflow">break</font>;
+00117 }
+00118 }
+00119 }
+00120
+00121
+00122 <font class="comment">// to truncate a file at its current position</font>
+00123 <font class="comment">// leaving byte at current possition intact</font>
+00124 <font class="comment">// deleting everything afterward.</font>
+00125 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> FileMgr::trunc(FileDesc *file) {
+00126
+00127 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *writeTest = <font class="stringliteral">"x"</font>;
+00128 <font class="keywordtype">long</font> size = lseek(file-&gt;getFd(), 1, SEEK_CUR);
+00129 <font class="keywordtype">char</font> nibble [ 32767 ];
+00130 <font class="keywordtype">bool</font> writable = write(file-&gt;getFd(), writeTest, 1);
+00131 <font class="keywordtype">int</font> bytes = 0;
+00132
+00133 <font class="keywordflow">if</font> (writable) {
+00134 <font class="comment">// get tmpfilename</font>
+00135 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(file-&gt;path) + 10 ];
+00136 <font class="keywordtype">int</font> i;
+00137 <font class="keywordflow">for</font> (i = 0; i &lt; 9999; i++) {
+00138 sprintf(buf, <font class="stringliteral">"%stmp%.4d"</font>, file-&gt;path, i);
+00139 <font class="keywordflow">if</font> (!existsFile(buf))
+00140 <font class="keywordflow">break</font>;
+00141 }
+00142 <font class="keywordflow">if</font> (i == 9999)
+00143 <font class="keywordflow">return</font> -2;
+00144
+00145 <font class="keywordtype">int</font> fd = ::open(buf, O_CREAT|O_RDWR, S_IREAD|S_IWRITE);
+00146 <font class="keywordflow">if</font> (fd &lt; 0)
+00147 <font class="keywordflow">return</font> -3;
+00148
+00149 lseek(file-&gt;getFd(), 0, SEEK_SET);
+00150 <font class="keywordflow">while</font> (size &gt; 0) {
+00151 bytes = read(file-&gt;getFd(), nibble, 32767);
+00152 write(fd, nibble, (bytes &lt; size)?bytes:size);
+00153 size -= bytes;
+00154 }
+00155 <font class="comment">// zero out the file</font>
+00156 ::close(file-&gt;fd);
+00157 file-&gt;fd = ::open(file-&gt;path, O_TRUNC, S_IREAD|S_IWRITE);
+00158 ::close(file-&gt;fd);
+00159 file-&gt;fd = -77; <font class="comment">// force file open by filemgr</font>
+00160 <font class="comment">// copy tmp file back (dumb, but must preserve file permissions)</font>
+00161 lseek(fd, 0, SEEK_SET);
+00162 <font class="keywordflow">do</font> {
+00163 bytes = read(fd, nibble, 32767);
+00164 write(file-&gt;getFd(), nibble, bytes);
+00165 } <font class="keywordflow">while</font> (bytes == 32767);
+00166
+00167 ::close(fd);
+00168 ::close(file-&gt;fd);
+00169 unlink(buf); <font class="comment">// remove our tmp file</font>
+00170 file-&gt;fd = -77; <font class="comment">// causes file to be swapped out forcing open on next call to getFd()</font>
+00171 }
+00172 <font class="keywordflow">else</font> { <font class="comment">// put offset back and return failure</font>
+00173 lseek(file-&gt;getFd(), -1, SEEK_CUR);
+00174 <font class="keywordflow">return</font> -1;
+00175 }
+00176 <font class="keywordflow">return</font> 0;
+00177 }
+00178
+00179
+00180 <font class="keywordtype">int</font> FileMgr::sysOpen(FileDesc *file) {
+00181 FileDesc **loop;
+00182 <font class="keywordtype">int</font> openCount = 1; <font class="comment">// because we are presently opening 1 file, and we need to be sure to close files to accomodate, if necessary</font>
+00183
+00184 <font class="keywordflow">for</font> (loop = &amp;files; *loop; loop = &amp;((*loop)-&gt;next)) {
+00185
+00186 <font class="keywordflow">if</font> ((*loop)-&gt;fd &gt; 0) {
+00187 <font class="keywordflow">if</font> (++openCount &gt; maxFiles) {
+00188 (*loop)-&gt;offset = lseek((*loop)-&gt;fd, 0, SEEK_CUR);
+00189 ::close((*loop)-&gt;fd);
+00190 (*loop)-&gt;fd = -77;
+00191 }
+00192 }
+00193
+00194 <font class="keywordflow">if</font> (*loop == file) {
+00195 <font class="keywordflow">if</font> (*loop != files) {
+00196 *loop = (*loop)-&gt;next;
+00197 file-&gt;next = files;
+00198 files = file;
+00199 }
+00200 <font class="keywordflow">if</font> ((!access(file-&gt;path, 04)) || ((file-&gt;mode &amp; O_CREAT) == O_CREAT)) { <font class="comment">// check for at least file exists / read access before we try to open</font>
+00201 <font class="keywordtype">char</font> tries = (((file-&gt;mode &amp; O_RDWR) == O_RDWR) &amp;&amp; (file-&gt;tryDowngrade)) ? 2 : 1; <font class="comment">// try read/write if possible</font>
+00202 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; tries; i++) {
+00203 <font class="keywordflow">if</font> (i &gt; 0) {
+00204 file-&gt;mode = (file-&gt;mode &amp; ~O_RDWR); <font class="comment">// remove write access</font>
+00205 file-&gt;mode = (file-&gt;mode | O_RDONLY);<font class="comment">// add read access</font>
+00206 }
+00207 file-&gt;fd = ::open(file-&gt;path, file-&gt;mode, file-&gt;perms);
+00208
+00209 <font class="keywordflow">if</font> (file-&gt;fd &gt;= 0)
+00210 <font class="keywordflow">break</font>;
+00211 }
+00212
+00213 <font class="keywordflow">if</font> (file-&gt;fd &gt;= 0)
+00214 lseek(file-&gt;fd, file-&gt;offset, SEEK_SET);
+00215 }
+00216 <font class="keywordflow">else</font> file-&gt;fd = -1;
+00217 <font class="keywordflow">if</font> (!*loop)
+00218 <font class="keywordflow">break</font>;
+00219 }
+00220 }
+00221 <font class="keywordflow">return</font> file-&gt;fd;
+00222 }
+00223
+00224
+00225 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> FileMgr::existsFile(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *ifileName)
+00226 {
+00227 <font class="keywordtype">int</font> len = strlen(ipath) + ((ifileName)?strlen(ifileName):0) + 3;
+00228 <font class="keywordtype">char</font> *ch;
+00229 <font class="keywordtype">char</font> *path = <font class="keyword">new</font> <font class="keywordtype">char</font> [ len ];
+00230 strcpy(path, ipath);
+00231
+00232 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'\\'</font>) || (path[strlen(path)-1] == <font class="charliteral">'/'</font>))
+00233 path[strlen(path)-1] = 0;
+00234
+00235 <font class="keywordflow">if</font> (ifileName) {
+00236 ch = path + strlen(path);
+00237 sprintf(ch, <font class="stringliteral">"/%s"</font>, ifileName);
+00238 }
+00239 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> retVal = !access(path, 04);
+00240 <font class="keyword">delete</font> [] path;
+00241 <font class="keywordflow">return</font> retVal;
+00242 }
+00243
+00244
+00245 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> FileMgr::existsDir(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *idirName)
+00246 {
+00247 <font class="keywordtype">char</font> *ch;
+00248 <font class="keywordtype">int</font> len = strlen(ipath) + ((idirName)?strlen(idirName):0) + 1;
+00249 <font class="keywordflow">if</font> (idirName)
+00250 len += strlen(idirName);
+00251 <font class="keywordtype">char</font> *path = <font class="keyword">new</font> <font class="keywordtype">char</font> [ len ];
+00252 strcpy(path, ipath);
+00253
+00254 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'\\'</font>) || (path[strlen(path)-1] == <font class="charliteral">'/'</font>))
+00255 path[strlen(path)-1] = 0;
+00256
+00257 <font class="keywordflow">if</font> (idirName) {
+00258 ch = path + strlen(path);
+00259 sprintf(ch, <font class="stringliteral">"/%s"</font>, idirName);
+00260 }
+00261 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> retVal = !access(path, 04);
+00262 <font class="keyword">delete</font> [] path;
+00263 <font class="keywordflow">return</font> retVal;
+00264 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/filemgr_8h-source.html b/doc/api-documentation/html/filemgr_8h-source.html
new file mode 100644
index 0000000..e611129
--- /dev/null
+++ b/doc/api-documentation/html/filemgr_8h-source.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>filemgr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>filemgr.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * filemgr.h - definition of class FileMgr used for pooling file handles</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: filemgr_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef FILEMGR_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define FILEMGR_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;sys/stat.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00027
+00028 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00029
+00030 <font class="keyword">class </font>SWDLLEXPORT FileMgr;
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT FileDesc
+00033 {
+00034
+00035 <font class="keyword">friend</font> <font class="keyword">class </font>FileMgr;
+00036
+00037 <font class="keywordtype">long</font> offset;
+00038 <font class="keywordtype">int</font> fd; <font class="comment">// -77 closed;</font>
+00039 FileMgr *parent;
+00040 FileDesc *next;
+00041
+00042 <font class="keyword">public</font>:
+00043 FileDesc (FileMgr * parent, <font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> mode, <font class="keywordtype">int</font> perms, <font class="keywordtype">bool</font> tryDowngrade);
+00044 <font class="keyword">virtual</font> ~FileDesc ();
+00045 <font class="keywordtype">int</font> getFd ();
+00046 <font class="keywordtype">char</font> *path;
+00047 <font class="keywordtype">int</font> mode;
+00048 <font class="keywordtype">int</font> perms;
+00049 <font class="keywordtype">bool</font> tryDowngrade;
+00050 };
+00051
+00052
+00053 <font class="keyword">class </font>FileMgr
+00054 {
+00055
+00056 <font class="keyword">friend</font> <font class="keyword">class </font>FileDesc;
+00057
+00058 FileDesc *files;
+00059 <font class="keywordtype">int</font> sysOpen (FileDesc * file);
+00060 <font class="keyword">public</font>:
+00061
+00062 FileMgr (<font class="keywordtype">int</font> maxFiles = 35);
+00063 ~FileMgr ();
+00064 FileDesc *open (<font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> mode, <font class="keywordtype">bool</font> tryDowngrade);
+00065 FileDesc *open (<font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> mode, <font class="keywordtype">int</font> perms = S_IREAD | S_IWRITE, <font class="keywordtype">bool</font> tryDowngrade = <font class="keyword">false</font>);
+00066 <font class="keywordtype">void</font> close (FileDesc *);
+00067
+00068 <font class="keyword">static</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> existsFile (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *ifileName = 0);
+00069 <font class="keyword">static</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> existsDir (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *idirName = 0);
+00070 <font class="comment">// to truncate a file at its current position</font>
+00071 <font class="comment">// leaving byte at current possition intact</font>
+00072 <font class="comment">// deleting everything afterward.</font>
+00073 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> trunc (FileDesc *);
+00074
+00075 <font class="keywordtype">int</font> maxFiles;
+00076 <font class="keyword">static</font> FileMgr systemFileMgr;
+00077 };
+00078
+00079
+00080
+00081
+00082 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/files.html b/doc/api-documentation/html/files.html
new file mode 100644
index 0000000..fbd2cc9
--- /dev/null
+++ b/doc/api-documentation/html/files.html
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>File Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project File List</h1>Here is a list of all documented files with brief descriptions:<table>
+ <tr><td class="indexkey"><b>cipherfil.cpp</b> <a href="cipherfil_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>cipherfil.h</b> <a href="cipherfil_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>compress.cpp</b> <a href="compress_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>deflate.h</b> <a href="deflate_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>defs.h</b> <a href="defs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>dirent.cpp</b> <a href="dirent_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>dirent.h</b> <a href="dirent_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>echomod.cpp</b> <a href="echomod_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>echomod.h</b> <a href="echomod_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>encfiltmgr.cpp</b> <a href="encfiltmgr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>encfiltmgr.h</b> <a href="encfiltmgr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>entriesblk.cpp</b> <a href="entriesblk_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>entriesblk.h</b> <a href="entriesblk_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>femain.cpp</b> <a href="femain_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>femain.h</b> <a href="femain_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>filemgr.cpp</b> <a href="filemgr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>filemgr.h</b> <a href="filemgr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>flatapi.h</b> <a href="flatapi_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbf.cpp</b> <a href="gbf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbf.h</b> <a href="gbf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbffootnotes.cpp</b> <a href="gbffootnotes_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbffootnotes.h</b> <a href="gbffootnotes_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfheadings.cpp</b> <a href="gbfheadings_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfheadings.h</b> <a href="gbfheadings_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfhtml.cpp</b> <a href="gbfhtml_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfhtml.h</b> <a href="gbfhtml_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfhtmlhref.cpp</b> <a href="gbfhtmlhref_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfhtmlhref.h</b> <a href="gbfhtmlhref_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawgbf/gbfidx.cpp</b> <a href="rawgbf_2gbfidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>ztext/gbfidx.cpp</b> <a href="ztext_2gbfidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfmorph.cpp</b> <a href="gbfmorph_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfmorph.h</b> <a href="gbfmorph_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfosis.cpp</b> <a href="gbfosis_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfosis.h</b> <a href="gbfosis_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfplain.cpp</b> <a href="gbfplain_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfplain.h</b> <a href="gbfplain_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfrtf.cpp</b> <a href="gbfrtf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfrtf.h</b> <a href="gbfrtf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfstrongs.cpp</b> <a href="gbfstrongs_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfstrongs.h</b> <a href="gbfstrongs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfthml.cpp</b> <a href="gbfthml_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gbfthml.h</b> <a href="gbfthml_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>Greek2Greek.cpp</b> <a href="_greek2_greek_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>Greek2Greek.h</b> <a href="_greek2_greek_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>GreekChars.h</b> <a href="_greek_chars_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>greeklexattribs.cpp</b> <a href="greeklexattribs_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>greeklexattribs.h</b> <a href="greeklexattribs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>hebrewmcim.cpp</b> <a href="hebrewmcim_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>hebrewmcim.h</b> <a href="hebrewmcim_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>hrefcom.cpp</b> <a href="hrefcom_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>hrefcom.h</b> <a href="hrefcom_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>infblock.h</b> <a href="infblock_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>infcodes.h</b> <a href="infcodes_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>inffast.h</b> <a href="inffast_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>inffixed.h</b> <a href="inffixed_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>inftrees.h</b> <a href="inftrees_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>infutil.h</b> <a href="infutil_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>jfbgen.cpp</b> <a href="jfbgen_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>kjvidx.cpp</b> <a href="kjvidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>latin1utf16.cpp</b> <a href="latin1utf16_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>latin1utf16.h</b> <a href="latin1utf16_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>latin1utf8.cpp</b> <a href="latin1utf8_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>latin1utf8.h</b> <a href="latin1utf8_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>listkey.cpp</b> <a href="listkey_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>listkey.h</b> <a href="listkey_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>localemgr.cpp</b> <a href="localemgr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>localemgr.h</b> <a href="localemgr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>lzsscomprs.cpp</b> <a href="lzsscomprs_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>lzsscomprs.h</b> <a href="lzsscomprs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>markupfiltmgr.cpp</b> <a href="markupfiltmgr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>markupfiltmgr.h</b> <a href="markupfiltmgr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>mhcidx.cpp</b> <a href="mhcidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>multimapwdef.h</b> <a href="multimapwdef_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>nasb.cpp</b> <a href="nasb_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>nuidx.cpp</b> <a href="nuidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>nullim.cpp</b> <a href="nullim_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>nullim.h</b> <a href="nullim_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>plainfootnotes.cpp</b> <a href="plainfootnotes_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>plainfootnotes.h</b> <a href="plainfootnotes_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>plainhtml.cpp</b> <a href="plainhtml_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>plainhtml.h</b> <a href="plainhtml_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawcom.cpp</b> <a href="rawcom_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawcom.h</b> <a href="rawcom_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawfiles.cpp</b> <a href="rawfiles_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawfiles.h</b> <a href="rawfiles_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawfilesgen.cpp</b> <a href="rawfilesgen_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawgbf.cpp</b> <a href="rawgbf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawgbf.h</b> <a href="rawgbf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawgenbook.cpp</b> <a href="rawgenbook_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawgenbook.h</b> <a href="rawgenbook_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawld.cpp</b> <a href="rawld_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawld.h</b> <a href="rawld_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawld4.cpp</b> <a href="rawld4_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawld4.h</b> <a href="rawld4_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawstr.cpp</b> <a href="rawstr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawstr.h</b> <a href="rawstr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawstr4.cpp</b> <a href="rawstr4_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawstr4.h</b> <a href="rawstr4_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawtext.cpp</b> <a href="rawtext_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawtext.h</b> <a href="rawtext_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>comments/zcom/rawtxt2z.cpp</b> <a href="comments_2zcom_2rawtxt2z_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>texts/ztext/rawtxt2z.cpp</b> <a href="texts_2ztext_2rawtxt2z_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawverse.cpp</b> <a href="rawverse_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rawverse.h</b> <a href="rawverse_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>regex.h</b> <a href="regex_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>roman.h</b> <a href="roman_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rtfhtml.cpp</b> <a href="rtfhtml_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rtfhtml.h</b> <a href="rtfhtml_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>comments/rawcom/rtfidx.cpp</b> <a href="comments_2rawcom_2rtfidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>texts/rawtext/rtfidx.cpp</b> <a href="texts_2rawtext_2rtfidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rwphtml.cpp</b> <a href="rwphtml_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rwphtml.h</b> <a href="rwphtml_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rwpidx.cpp</b> <a href="rwpidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rwprtf.cpp</b> <a href="rwprtf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>rwprtf.h</b> <a href="rwprtf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>sapphire.cpp</b> <a href="sapphire_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>sapphire.h</b> <a href="sapphire_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>scsuutf8.cpp</b> <a href="scsuutf8_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>scsuutf8.h</b> <a href="scsuutf8_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>strkey.cpp</b> <a href="strkey_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>strkey.h</b> <a href="strkey_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swbasicfilter.cpp</b> <a href="swbasicfilter_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swbasicfilter.h</b> <a href="swbasicfilter_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcacher.cpp</b> <a href="swcacher_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcacher.h</b> <a href="swcacher_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcipher.cpp</b> <a href="swcipher_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcipher.h</b> <a href="swcipher_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcom.cpp</b> <a href="swcom_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcom.h</b> <a href="swcom_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcomprs.cpp</b> <a href="swcomprs_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swcomprs.h</b> <a href="swcomprs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swconfig.cpp</b> <a href="swconfig_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swconfig.h</b> <a href="swconfig_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swdisp.cpp</b> <a href="swdisp_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swdisp.h</b> <a href="swdisp_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swdisprtf.h</b> <a href="swdisprtf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swdisprtfchap.h</b> <a href="swdisprtfchap_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swfilter.h</b> <a href="swfilter_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swfiltermgr.cpp</b> <a href="swfiltermgr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swfiltermgr.h</b> <a href="swfiltermgr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swgenbook.cpp</b> <a href="swgenbook_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swgenbook.h</b> <a href="swgenbook_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swinputmeth.cpp</b> <a href="swinputmeth_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swinputmeth.h</b> <a href="swinputmeth_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swkey.cpp</b> <a href="swkey_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swkey.h</b> <a href="swkey_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swld.cpp</b> <a href="swld_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swld.h</b> <a href="swld_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swlocale.cpp</b> <a href="swlocale_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swlocale.h</b> <a href="swlocale_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swlog.cpp</b> <a href="swlog_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swlog.h</b> <a href="swlog_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swmacs.h</b> <a href="swmacs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swmgr.cpp</b> <a href="swmgr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swmgr.h</b> <a href="swmgr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swmodule.cpp</b> <a href="swmodule_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swmodule.h</b> <a href="swmodule_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swobject.h</b> <a href="swobject_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swtext.cpp</b> <a href="swtext_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swtext.h</b> <a href="swtext_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swunicod.cpp</b> <a href="swunicod_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swunicod.h</b> <a href="swunicod_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swversion.cpp</b> <a href="swversion_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swversion.h</b> <a href="swversion_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>swwinlog.h</b> <a href="swwinlog_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>sysdata.h</b> <a href="sysdata_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>tbdisp.h</b> <a href="tbdisp_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlfootnotes.cpp</b> <a href="thmlfootnotes_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlfootnotes.h</b> <a href="thmlfootnotes_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlgbf.cpp</b> <a href="thmlgbf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlgbf.h</b> <a href="thmlgbf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlheadings.cpp</b> <a href="thmlheadings_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlheadings.h</b> <a href="thmlheadings_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlhtml.cpp</b> <a href="thmlhtml_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlhtml.h</b> <a href="thmlhtml_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlhtmlhref.cpp</b> <a href="thmlhtmlhref_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlhtmlhref.h</b> <a href="thmlhtmlhref_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmllemma.cpp</b> <a href="thmllemma_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmllemma.h</b> <a href="thmllemma_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlmorph.cpp</b> <a href="thmlmorph_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlmorph.h</b> <a href="thmlmorph_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlolb.cpp</b> <a href="thmlolb_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlolb.h</b> <a href="thmlolb_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlosis.cpp</b> <a href="thmlosis_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlosis.h</b> <a href="thmlosis_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlplain.cpp</b> <a href="thmlplain_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlplain.h</b> <a href="thmlplain_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlrtf.cpp</b> <a href="thmlrtf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlrtf.h</b> <a href="thmlrtf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlscripref.cpp</b> <a href="thmlscripref_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlscripref.h</b> <a href="thmlscripref_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlstrongs.cpp</b> <a href="thmlstrongs_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlstrongs.h</b> <a href="thmlstrongs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlvariants.cpp</b> <a href="thmlvariants_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>thmlvariants.h</b> <a href="thmlvariants_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>treekey.cpp</b> <a href="treekey_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>treekey.h</b> <a href="treekey_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>treekeyidx.cpp</b> <a href="treekeyidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>treekeyidx.h</b> <a href="treekeyidx_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>trees.h</b> <a href="trees_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>unicodertf.cpp</b> <a href="unicodertf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>unicodertf.h</b> <a href="unicodertf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>unixstr.cpp</b> <a href="unixstr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>unixstr.h</b> <a href="unixstr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>untgz.h</b> <a href="untgz_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf16utf8.cpp</b> <a href="utf16utf8_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf16utf8.h</b> <a href="utf16utf8_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8arshaping.cpp</b> <a href="utf8arshaping_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8arshaping.h</b> <a href="utf8arshaping_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8bidireorder.cpp</b> <a href="utf8bidireorder_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8bidireorder.h</b> <a href="utf8bidireorder_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8cantillation.cpp</b> <a href="utf8cantillation_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8cantillation.h</b> <a href="utf8cantillation_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8greekaccents.cpp</b> <a href="utf8greekaccents_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8greekaccents.h</b> <a href="utf8greekaccents_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8hebrewpoints.cpp</b> <a href="utf8hebrewpoints_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8hebrewpoints.h</b> <a href="utf8hebrewpoints_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8html.cpp</b> <a href="utf8html_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8html.h</b> <a href="utf8html_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8latin1.cpp</b> <a href="utf8latin1_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8latin1.h</b> <a href="utf8latin1_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8nfc.cpp</b> <a href="utf8nfc_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8nfc.h</b> <a href="utf8nfc_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8nfkd.cpp</b> <a href="utf8nfkd_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8nfkd.h</b> <a href="utf8nfkd_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8transliterator.cpp</b> <a href="utf8transliterator_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8transliterator.h</b> <a href="utf8transliterator_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8utf16.cpp</b> <a href="utf8utf16_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utf8utf16.h</b> <a href="utf8utf16_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utilconf.cpp</b> <a href="utilconf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utilconf.h</b> <a href="utilconf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utilfuns.h</b> <a href="utilfuns_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utilstr.cpp</b> <a href="utilstr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>utilstr.h</b> <a href="utilstr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>versekey.cpp</b> <a href="versekey_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>versekey.h</b> <a href="versekey_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>vntidx.cpp</b> <a href="vntidx_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zcom.cpp</b> <a href="zcom_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zcom.h</b> <a href="zcom_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zconf.h</b> <a href="zconf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zipcomprs.cpp</b> <a href="zipcomprs_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zipcomprs.h</b> <a href="zipcomprs_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zld.cpp</b> <a href="zld_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zld.h</b> <a href="zld_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zlib.h</b> <a href="zlib_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zstr.cpp</b> <a href="zstr_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zstr.h</b> <a href="zstr_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>ztext.cpp</b> <a href="ztext_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>ztext.h</b> <a href="ztext_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zutil.h</b> <a href="zutil_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zverse.cpp</b> <a href="zverse_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>zverse.h</b> <a href="zverse_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+</table>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/flatapi_8h-source.html b/doc/api-documentation/html/flatapi_8h-source.html
new file mode 100644
index 0000000..ef66468
--- /dev/null
+++ b/doc/api-documentation/html/flatapi_8h-source.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>flatapi.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>flatapi.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef SWORDAPI_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define SWORDAPI_H</font>
+00003 <font class="preprocessor"></font>
+00004 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00005 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00006 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;swmgr.h&gt;</font>
+00008
+00009 <font class="preprocessor">#ifdef __cplusplus</font>
+00010 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00011 <font class="preprocessor"></font>
+00012 <font class="keyword">extern</font> <font class="stringliteral">"C"</font> {
+00013
+00014 <font class="preprocessor">#define SWHANDLE int</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
+00017 ModMap::iterator it;
+00018 ModMap::iterator end;
+00019 } ModItType;
+00020
+00021 <font class="comment">//-----------------------------------------------------------------</font>
+00022 <font class="comment">// stringlist_iterator methods</font>
+00023
+00024 <font class="keywordtype">void</font> stringlist_iterator_next(SWHANDLE hsli);
+00025 <font class="keyword">const</font> <font class="keywordtype">char</font> *stringlist_iterator_val(SWHANDLE hsli);
+00026
+00027
+00028 <font class="comment">//-----------------------------------------------------------------</font>
+00029 <font class="comment">// modmap methods</font>
+00030 <font class="comment">//</font>
+00031 <font class="keywordtype">void</font> ModList_iterator_next(SWHANDLE hmmi);
+00032 SWHANDLE ModList_iterator_val(SWHANDLE hmmi);
+00033
+00034
+00035 <font class="comment">//-----------------------------------------------------------------</font>
+00036 <font class="comment">// SWMgr methods</font>
+00037 <font class="comment">//</font>
+00038 SWHANDLE SWMgr_new();
+00039 <font class="comment">// SWConfig *, SWConfig *, bool, SWFilterMgr *</font>
+00040 SWHANDLE SWMgr_newEx(SWHANDLE hiconfig, SWHANDLE hisysconfig, <font class="keywordtype">char</font> autoload, SWHANDLE hfilterMgr);
+00041 <font class="keywordtype">void</font> SWMgr_delete(SWHANDLE hmgr);
+00042 SWHANDLE SWMgr_getConfig(SWHANDLE hmgr);
+00043 SWHANDLE SWMgr_getModulesIterator(SWHANDLE hmgr);
+00044 SWHANDLE SWMgr_getModuleByName(SWHANDLE hmgr, <font class="keyword">const</font> <font class="keywordtype">char</font> *name);
+00045 <font class="keyword">const</font> <font class="keywordtype">char</font> * SWMgr_getPrefixPath(SWHANDLE hmgr);
+00046 <font class="keyword">const</font> <font class="keywordtype">char</font> * SWMgr_getConfigPath(SWHANDLE hmgr);
+00047 <font class="keywordtype">void</font> SWMgr_setGlobalOption(SWHANDLE hmgr, <font class="keyword">const</font> <font class="keywordtype">char</font> *option, <font class="keyword">const</font> <font class="keywordtype">char</font> *value);
+00048 <font class="keyword">const</font> <font class="keywordtype">char</font> * SWMgr_getGlobalOption(SWHANDLE hmgr, <font class="keyword">const</font> <font class="keywordtype">char</font> *option);
+00049 <font class="keyword">const</font> <font class="keywordtype">char</font> * SWMgr_getGlobalOptionTip(SWHANDLE hmgr, <font class="keyword">const</font> <font class="keywordtype">char</font> *option);
+00050 <font class="comment">// ret: forward_iterator</font>
+00051 SWHANDLE SWMgr_getGlobalOptionsIterator(SWHANDLE hmgr);
+00052 <font class="comment">// ret: forward_iterator</font>
+00053 SWHANDLE SWMgr_getGlobalOptionValuesIterator(SWHANDLE hmgr, <font class="keyword">const</font> <font class="keywordtype">char</font> *option);
+00054 <font class="keywordtype">void</font> SWMgr_setCipherKey(SWHANDLE hmgr, <font class="keyword">const</font> <font class="keywordtype">char</font> *modName, <font class="keyword">const</font> <font class="keywordtype">char</font> *key);
+00055
+00056
+00057 <font class="comment">//-----------------------------------------------------------------</font>
+00058 <font class="comment">// SWModule methods</font>
+00059
+00060 <font class="keywordtype">void</font> SWModule_terminateSearch(SWHANDLE hmodule);
+00061 <font class="keywordtype">char</font> SWModule_error(SWHANDLE hmodule);
+00062 <font class="keywordtype">int</font> SWModule_getEntrySize(SWHANDLE hmodule);
+00063 <font class="keywordtype">void</font> SWModule_setKeyText(SWHANDLE hmodule, <font class="keyword">const</font> <font class="keywordtype">char</font> *key);
+00064 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWModule_getKeyText(SWHANDLE hmodule);
+00065 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWModule_getName(SWHANDLE hmodule);
+00066 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWModule_getDescription(SWHANDLE hmodule);
+00067 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWModule_getType(SWHANDLE hmodule);
+00068 <font class="keywordtype">void</font> SWModule_previous(SWHANDLE hmodule);
+00069 <font class="keywordtype">void</font> SWModule_next(SWHANDLE hmodule);
+00070 <font class="keywordtype">void</font> SWModule_begin(SWHANDLE hmodule);
+00071 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWModule_getStripText(SWHANDLE hmodule);
+00072 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWModule_getRenderText(SWHANDLE hmodule);
+00073
+00074 }
+00075 <font class="preprocessor">#ifdef __cplusplus</font>
+00076 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00077 <font class="preprocessor"></font>
+00078 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/functions.html b/doc/api-documentation/html/functions.html
new file mode 100644
index 0000000..c4c8fd1
--- /dev/null
+++ b/doc/api-documentation/html/functions.html
@@ -0,0 +1,241 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Compound Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project Compound Members</h1><center>
+<a href="#index__">_</a>&nbsp;|&nbsp;<a href="#index_a">a</a>&nbsp;|&nbsp;<a href="#index_b">b</a>&nbsp;|&nbsp;<a href="#index_c">c</a>&nbsp;|&nbsp;<a href="#index_d">d</a>&nbsp;|&nbsp;<a href="#index_e">e</a>&nbsp;|&nbsp;<a href="#index_f">f</a>&nbsp;|&nbsp;<a href="#index_g">g</a>&nbsp;|&nbsp;<a href="#index_h">h</a>&nbsp;|&nbsp;<a href="#index_i">i</a>&nbsp;|&nbsp;<a href="#index_k">k</a>&nbsp;|&nbsp;<a href="#index_l">l</a>&nbsp;|&nbsp;<a href="#index_m">m</a>&nbsp;|&nbsp;<a href="#index_n">n</a>&nbsp;|&nbsp;<a href="#index_o">o</a>&nbsp;|&nbsp;<a href="#index_p">p</a>&nbsp;|&nbsp;<a href="#index_r">r</a>&nbsp;|&nbsp;<a href="#index_s">s</a>&nbsp;|&nbsp;<a href="#index_t">t</a>&nbsp;|&nbsp;<a href="#index_u">u</a>&nbsp;|&nbsp;<a href="#index_v">v</a>&nbsp;|&nbsp;<a href="#index_~">~</a></center>
+
+<p>
+Here is a list of all documented class members with links to the classes they belong to:<a name="index__"><h3>- _ -</h3></a>
+<ul>
+<li>_compare()
+: <a class="el" href="class_verse_key.html#a39">VerseKey</a></ul>
+<a name="index_a"><h3>- a -</h3></a>
+<ul>
+<li>AddEncodingFilter()
+: <a class="el" href="class_s_w_module.html#a45">SWModule</a><li>AddEncodingFilters()
+: <a class="el" href="class_s_w_mgr.html#b8">SWMgr</a>, <a class="el" href="class_encoding_filter_mgr.html#a4">EncodingFilterMgr</a><li>AddOptionFilter()
+: <a class="el" href="class_s_w_module.html#a54">SWModule</a><li>AddRawFilter()
+: <a class="el" href="class_s_w_module.html#a51">SWModule</a><li>AddRawFilters()
+: <a class="el" href="class_s_w_mgr.html#b11">SWMgr</a>, <a class="el" href="class_encoding_filter_mgr.html#a3">EncodingFilterMgr</a><li>AddRenderFilter()
+: <a class="el" href="class_s_w_module.html#a41">SWModule</a><li>AddRenderFilters()
+: <a class="el" href="class_s_w_mgr.html#b9">SWMgr</a>, <a class="el" href="class_markup_filter_mgr.html#a3">MarkupFilterMgr</a><li>AddStripFilter()
+: <a class="el" href="class_s_w_module.html#a49">SWModule</a><li>AddStripFilters()
+: <a class="el" href="class_s_w_mgr.html#b10">SWMgr</a><li>autonorm
+: <a class="el" href="class_verse_key.html#o8">VerseKey</a><li>AutoNormalize()
+: <a class="el" href="class_verse_key.html#a31">VerseKey</a></ul>
+<a name="index_b"><h3>- b -</h3></a>
+<ul>
+<li>Book()
+: <a class="el" href="class_verse_key.html#a27">VerseKey</a></ul>
+<a name="index_c"><h3>- c -</h3></a>
+<ul>
+<li>Chapter()
+: <a class="el" href="class_verse_key.html#a28">VerseKey</a><li>ClearBounds()
+: <a class="el" href="class_verse_key.html#a9">VerseKey</a><li>ClearList()
+: <a class="el" href="class_list_key.html#a4">ListKey</a><li>clone()
+: <a class="el" href="class_verse_key.html#a10">VerseKey</a>, <a class="el" href="class_s_w_key.html#a3">SWKey</a>, <a class="el" href="class_list_key.html#a3">ListKey</a><li>compare()
+: <a class="el" href="class_verse_key.html#a38">VerseKey</a>, <a class="el" href="class_tree_key_idx.html#a28">TreeKeyIdx</a>, <a class="el" href="class_tree_key.html#a22">TreeKey</a>, <a class="el" href="class_s_w_key.html#a11">SWKey</a><li>config
+: <a class="el" href="class_s_w_mgr.html#m0">SWMgr</a><li>copyFrom()
+: <a class="el" href="class_verse_key.html#a15">VerseKey</a>, <a class="el" href="class_tree_key_idx.html#a20">TreeKeyIdx</a>, <a class="el" href="class_s_w_key.html#a8">SWKey</a>, <a class="el" href="class_list_key.html#a12">ListKey</a><li>Count()
+: <a class="el" href="class_list_key.html#a5">ListKey</a><li>CreateKey()
+: <a class="el" href="class_s_w_text.html#a2">SWText</a>, <a class="el" href="class_s_w_module.html#a26">SWModule</a>, <a class="el" href="class_s_w_l_d.html#a2">SWLD</a>, <a class="el" href="class_s_w_gen_book.html#a2">SWGenBook</a>, <a class="el" href="class_s_w_com.html#a2">SWCom</a><li>createModule()
+: <a class="el" href="class_s_w_module.html#d1">SWModule</a></ul>
+<a name="index_d"><h3>- d -</h3></a>
+<ul>
+<li>debug
+: <a class="el" href="class_s_w_mgr.html#p0">SWMgr</a><li>decrement()
+: <a class="el" href="class_verse_key.html#a17">VerseKey</a>, <a class="el" href="class_tree_key_idx.html#a29">TreeKeyIdx</a>, <a class="el" href="class_tree_key.html#a23">TreeKey</a>, <a class="el" href="class_s_w_key.html#a14">SWKey</a>, <a class="el" href="class_list_key.html#a14">ListKey</a><li>deleteEntry()
+: <a class="el" href="class_s_w_module.html#a35">SWModule</a><li>Description()
+: <a class="el" href="class_s_w_module.html#a16">SWModule</a><li>Direction()
+: <a class="el" href="class_s_w_module.html#a18">SWModule</a><li>Disp()
+: <a class="el" href="class_s_w_module.html#a14">SWModule</a><li>disp
+: <a class="el" href="class_s_w_module.html#n15">SWModule</a><li>Display()
+: <a class="el" href="class_s_w_module.html#a13">SWModule</a>, <a class="el" href="class_s_w_display.html#a1">SWDisplay</a></ul>
+<a name="index_e"><h3>- e -</h3></a>
+<ul>
+<li>Encoding()
+: <a class="el" href="class_s_w_module.html#a19">SWModule</a>, <a class="el" href="class_encoding_filter_mgr.html#a2">EncodingFilterMgr</a><li>encodingFilter()
+: <a class="el" href="class_s_w_module.html#a48">SWModule</a><li>EncodingFilterMgr()
+: <a class="el" href="class_encoding_filter_mgr.html#a0">EncodingFilterMgr</a><li>encodingFilters
+: <a class="el" href="class_s_w_module.html#n22">SWModule</a><li>equals()
+: <a class="el" href="class_s_w_key.html#a12">SWKey</a><li>Error()
+: <a class="el" href="class_s_w_module.html#a2">SWModule</a>, <a class="el" href="class_s_w_key.html#a6">SWKey</a></ul>
+<a name="index_f"><h3>- f -</h3></a>
+<ul>
+<li>filename
+: <a class="el" href="class_s_w_config.html#m0">SWConfig</a><li>filterBuffer()
+: <a class="el" href="class_s_w_module.html#a52">SWModule</a><li>findindex()
+: <a class="el" href="class_verse_key.html#c6">VerseKey</a><li>freshtext()
+: <a class="el" href="class_verse_key.html#c4">VerseKey</a></ul>
+<a name="index_g"><h3>- g -</h3></a>
+<ul>
+<li>getAvailableLocales()
+: <a class="el" href="class_locale_mgr.html#a3">LocaleMgr</a><li>getClass()
+: <a class="el" href="class_s_w_object.html#a0">SWObject</a><li>getDefaultLocaleName()
+: <a class="el" href="class_locale_mgr.html#a5">LocaleMgr</a><li>getDescription()
+: <a class="el" href="class_s_w_locale.html#a3">SWLocale</a><li>GetElement()
+: <a class="el" href="class_list_key.html#a8">ListKey</a><li>getEntrySize()
+: <a class="el" href="class_s_w_module.html#a7">SWModule</a><li>getGlobalOption()
+: <a class="el" href="class_s_w_mgr.html#a7">SWMgr</a><li>getGlobalOptions()
+: <a class="el" href="class_s_w_mgr.html#a9">SWMgr</a><li>getGlobalOptionTip()
+: <a class="el" href="class_s_w_mgr.html#a8">SWMgr</a><li>getLocale()
+: <a class="el" href="class_locale_mgr.html#a2">LocaleMgr</a><li>getName()
+: <a class="el" href="class_s_w_locale.html#a2">SWLocale</a><li>getRawEntry()
+: <a class="el" href="class_s_w_module.html#a28">SWModule</a><li>getText()
+: <a class="el" href="class_verse_key.html#a11">VerseKey</a>, <a class="el" href="class_tree_key_idx.html#a26">TreeKeyIdx</a>, <a class="el" href="class_tree_key.html#a21">TreeKey</a>, <a class="el" href="class_s_w_key.html#a9">SWKey</a></ul>
+<a name="index_h"><h3>- h -</h3></a>
+<ul>
+<li>handleEscapeString()
+: <a class="el" href="class_s_w_basic_filter.html#b14">SWBasicFilter</a><li>handleToken()
+: <a class="el" href="class_th_m_l_r_t_f.html#b0">ThMLRTF</a>, <a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html#b0">ThMLHTMLHREF</a>, <a class="el" href="class_th_m_l_h_t_m_l.html#b0">ThMLHTML</a>, <a class="el" href="class_s_w_basic_filter.html#b13">SWBasicFilter</a>, <a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">GBFHTMLHREF</a><li>Headings()
+: <a class="el" href="class_verse_key.html#a32">VerseKey</a><li>headings
+: <a class="el" href="class_verse_key.html#o9">VerseKey</a></ul>
+<a name="index_i"><h3>- i -</h3></a>
+<ul>
+<li>increment()
+: <a class="el" href="class_verse_key.html#a18">VerseKey</a>, <a class="el" href="class_tree_key_idx.html#a30">TreeKeyIdx</a>, <a class="el" href="class_tree_key.html#a24">TreeKey</a>, <a class="el" href="class_s_w_key.html#a15">SWKey</a>, <a class="el" href="class_list_key.html#a15">ListKey</a><li>Index()
+: <a class="el" href="class_verse_key.html#a35">VerseKey</a>, <a class="el" href="class_tree_key.html#a26">TreeKey</a>, <a class="el" href="class_s_w_key.html#a17">SWKey</a>, <a class="el" href="class_list_key.html#a18">ListKey</a><li>init()
+: <a class="el" href="class_verse_key.html#c3">VerseKey</a><li>initstatics()
+: <a class="el" href="class_verse_key.html#c2">VerseKey</a><li>InstallScan()
+: <a class="el" href="class_s_w_mgr.html#a4">SWMgr</a><li>instance
+: <a class="el" href="class_verse_key.html#r3">VerseKey</a><li>isSearchOptimallySupported()
+: <a class="el" href="class_s_w_module.html#a25">SWModule</a><li>isUnicode()
+: <a class="el" href="class_s_w_module.html#a3">SWModule</a><li>isWritable()
+: <a class="el" href="class_s_w_module.html#a31">SWModule</a></ul>
+<a name="index_k"><h3>- k -</h3></a>
+<ul>
+<li>Key()
+: <a class="el" href="class_s_w_module.html#a11">SWModule</a><li>key
+: <a class="el" href="class_s_w_module.html#n6">SWModule</a><li>KeyText()
+: <a class="el" href="class_s_w_module.html#a12">SWModule</a>, <a class="el" href="class_s_w_l_d.html#a3">SWLD</a></ul>
+<a name="index_l"><h3>- l -</h3></a>
+<ul>
+<li>Lang()
+: <a class="el" href="class_s_w_module.html#a21">SWModule</a><li>ListKey()
+: <a class="el" href="class_list_key.html#a0">ListKey</a><li>Load()
+: <a class="el" href="class_s_w_mgr.html#a5">SWMgr</a>, <a class="el" href="class_s_w_config.html#a2">SWConfig</a><li>loadConfigDir()
+: <a class="el" href="class_locale_mgr.html#a7">LocaleMgr</a><li>LocaleMgr()
+: <a class="el" href="class_locale_mgr.html#a0">LocaleMgr</a><li>LowerBound()
+: <a class="el" href="class_verse_key.html#a7">VerseKey</a></ul>
+<a name="index_m"><h3>- m -</h3></a>
+<ul>
+<li>Markup()
+: <a class="el" href="class_s_w_module.html#a20">SWModule</a>, <a class="el" href="class_markup_filter_mgr.html#a2">MarkupFilterMgr</a><li>MarkupFilterMgr()
+: <a class="el" href="class_markup_filter_mgr.html#a0">MarkupFilterMgr</a><li>Modules
+: <a class="el" href="class_s_w_mgr.html#m2">SWMgr</a></ul>
+<a name="index_n"><h3>- n -</h3></a>
+<ul>
+<li>Name()
+: <a class="el" href="class_s_w_module.html#a15">SWModule</a><li>Normalize()
+: <a class="el" href="class_verse_key.html#a30">VerseKey</a><li>nullPercent()
+: <a class="el" href="class_s_w_module.html#d0">SWModule</a></ul>
+<a name="index_o"><h3>- o -</h3></a>
+<ul>
+<li>operator const char *()
+: <a class="el" href="class_s_w_module.html#a27">SWModule</a><li>operator SWKey &amp;()
+: <a class="el" href="class_s_w_module.html#a29">SWModule</a><li>operator SWKey *()
+: <a class="el" href="class_s_w_module.html#a30">SWModule</a><li>operator++()
+: <a class="el" href="class_s_w_module.html#a38">SWModule</a><li>operator+=()
+: <a class="el" href="class_s_w_module.html#a37">SWModule</a>, <a class="el" href="class_s_w_config.html#a4">SWConfig</a><li>operator--()
+: <a class="el" href="class_s_w_module.html#a39">SWModule</a><li>operator-=()
+: <a class="el" href="class_s_w_module.html#a36">SWModule</a><li>operator&lt;&lt;()
+: <a class="el" href="class_s_w_module.html#a34">SWModule</a>, <a class="el" href="class_list_key.html#a9">ListKey</a><li>operator=()
+: <a class="el" href="class_s_w_module.html#a40">SWModule</a><li>operator[]()
+: <a class="el" href="class_s_w_config.html#a5">SWConfig</a><li>optionFilter()
+: <a class="el" href="class_s_w_module.html#a55">SWModule</a><li>optionFilters
+: <a class="el" href="class_s_w_module.html#n21">SWModule</a></ul>
+<a name="index_p"><h3>- p -</h3></a>
+<ul>
+<li>parse()
+: <a class="el" href="class_verse_key.html#c5">VerseKey</a><li>Persist()
+: <a class="el" href="class_s_w_key.html#a5">SWKey</a><li>prefixPath
+: <a class="el" href="class_s_w_mgr.html#m3">SWMgr</a><li>pushString()
+: <a class="el" href="class_s_w_basic_filter.html#b12">SWBasicFilter</a></ul>
+<a name="index_r"><h3>- r -</h3></a>
+<ul>
+<li>rawFilter()
+: <a class="el" href="class_s_w_module.html#a53">SWModule</a><li>rawFilters
+: <a class="el" href="class_s_w_module.html#n19">SWModule</a><li>Remove()
+: <a class="el" href="class_list_key.html#a6">ListKey</a><li>RemoveEncodingFilter()
+: <a class="el" href="class_s_w_module.html#a46">SWModule</a><li>RemoveRenderFilter()
+: <a class="el" href="class_s_w_module.html#a42">SWModule</a><li>renderFilter()
+: <a class="el" href="class_s_w_module.html#a44">SWModule</a><li>renderFilters
+: <a class="el" href="class_s_w_module.html#n20">SWModule</a><li>RenderText()
+: <a class="el" href="class_s_w_module.html#a59">SWModule</a><li>ReplaceEncodingFilter()
+: <a class="el" href="class_s_w_module.html#a47">SWModule</a><li>ReplaceRenderFilter()
+: <a class="el" href="class_s_w_module.html#a43">SWModule</a></ul>
+<a name="index_s"><h3>- s -</h3></a>
+<ul>
+<li>Save()
+: <a class="el" href="class_s_w_config.html#a3">SWConfig</a><li>Search()
+: <a class="el" href="class_s_w_module.html#a22">SWModule</a><li>Sections
+: <a class="el" href="class_s_w_config.html#m1">SWConfig</a><li>setCipherKey()
+: <a class="el" href="class_s_w_mgr.html#a11">SWMgr</a><li>setDefaultLocaleName()
+: <a class="el" href="class_locale_mgr.html#a6">LocaleMgr</a><li>setentry()
+: <a class="el" href="class_s_w_module.html#a32">SWModule</a><li>setEscapeEnd()
+: <a class="el" href="class_s_w_basic_filter.html#b1">SWBasicFilter</a><li>setEscapeStart()
+: <a class="el" href="class_s_w_basic_filter.html#b0">SWBasicFilter</a><li>setGlobalOption()
+: <a class="el" href="class_s_w_mgr.html#a6">SWMgr</a><li>SetKey()
+: <a class="el" href="class_s_w_module.html#a9">SWModule</a><li>setPassThruUnknownEscapeString()
+: <a class="el" href="class_s_w_basic_filter.html#b5">SWBasicFilter</a><li>setPassThruUnknownToken()
+: <a class="el" href="class_s_w_basic_filter.html#b4">SWBasicFilter</a><li>setPosition()
+: <a class="el" href="class_verse_key.html#a16">VerseKey</a>, <a class="el" href="class_list_key.html#a13">ListKey</a><li>setSkipConsecutiveLinks()
+: <a class="el" href="class_s_w_module.html#a60">SWModule</a><li>setText()
+: <a class="el" href="class_verse_key.html#a13">VerseKey</a>, <a class="el" href="class_tree_key_idx.html#a24">TreeKeyIdx</a>, <a class="el" href="class_tree_key.html#a19">TreeKey</a>, <a class="el" href="class_s_w_key.html#a7">SWKey</a><li>SetToElement()
+: <a class="el" href="class_list_key.html#a7">ListKey</a><li>setTokenEnd()
+: <a class="el" href="class_s_w_basic_filter.html#b3">SWBasicFilter</a><li>setTokenStart()
+: <a class="el" href="class_s_w_basic_filter.html#b2">SWBasicFilter</a><li>stripFilter()
+: <a class="el" href="class_s_w_module.html#a50">SWModule</a><li>stripFilters
+: <a class="el" href="class_s_w_module.html#n18">SWModule</a><li>StripText()
+: <a class="el" href="class_s_w_module.html#a58">SWModule</a><li>StrKey()
+: <a class="el" href="class_str_key.html#a0">StrKey</a><li>SWCom()
+: <a class="el" href="class_s_w_com.html#a0">SWCom</a><li>SWConfig()
+: <a class="el" href="class_s_w_config.html#a0">SWConfig</a><li>SWGenBook()
+: <a class="el" href="class_s_w_gen_book.html#a0">SWGenBook</a><li>SWInputMethod()
+: <a class="el" href="class_s_w_input_method.html#a0">SWInputMethod</a><li>SWKey()
+: <a class="el" href="class_s_w_key.html#a1">SWKey</a><li>SWLD()
+: <a class="el" href="class_s_w_l_d.html#a0">SWLD</a><li>SWMgr()
+: <a class="el" href="class_s_w_mgr.html#a2">SWMgr</a><li>SWModule()
+: <a class="el" href="class_s_w_module.html#a0">SWModule</a><li>SWText()
+: <a class="el" href="class_s_w_text.html#a0">SWText</a><li>systemLocaleMgr
+: <a class="el" href="class_locale_mgr.html#p0">LocaleMgr</a></ul>
+<a name="index_t"><h3>- t -</h3></a>
+<ul>
+<li>terminateSearch
+: <a class="el" href="class_s_w_module.html#m0">SWModule</a><li>testament
+: <a class="el" href="class_verse_key.html#o4">VerseKey</a><li>Testament()
+: <a class="el" href="class_verse_key.html#a26">VerseKey</a><li>translate()
+: <a class="el" href="class_locale_mgr.html#a4">LocaleMgr</a><li>Type()
+: <a class="el" href="class_s_w_module.html#a17">SWModule</a></ul>
+<a name="index_u"><h3>- u -</h3></a>
+<ul>
+<li>UpperBound()
+: <a class="el" href="class_verse_key.html#a8">VerseKey</a></ul>
+<a name="index_v"><h3>- v -</h3></a>
+<ul>
+<li>Verse()
+: <a class="el" href="class_verse_key.html#a29">VerseKey</a><li>VerseKey()
+: <a class="el" href="class_verse_key.html#a3">VerseKey</a></ul>
+<a name="index_~"><h3>- ~ -</h3></a>
+<ul>
+<li>~EncodingFilterMgr()
+: <a class="el" href="class_encoding_filter_mgr.html#a1">EncodingFilterMgr</a><li>~ListKey()
+: <a class="el" href="class_list_key.html#a2">ListKey</a><li>~LocaleMgr()
+: <a class="el" href="class_locale_mgr.html#a1">LocaleMgr</a><li>~MarkupFilterMgr()
+: <a class="el" href="class_markup_filter_mgr.html#a1">MarkupFilterMgr</a><li>~StrKey()
+: <a class="el" href="class_str_key.html#a1">StrKey</a><li>~SWKey()
+: <a class="el" href="class_s_w_key.html#a2">SWKey</a><li>~SWMgr()
+: <a class="el" href="class_s_w_mgr.html#a3">SWMgr</a><li>~SWModule()
+: <a class="el" href="class_s_w_module.html#a1">SWModule</a><li>~VerseKey()
+: <a class="el" href="class_verse_key.html#a4">VerseKey</a></ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbf_8cpp-source.html b/doc/api-documentation/html/gbf_8cpp-source.html
new file mode 100644
index 0000000..72513b7
--- /dev/null
+++ b/doc/api-documentation/html/gbf_8cpp-source.html
@@ -0,0 +1,749 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbf.cpp</h1><div class="fragment"><pre>00001 <font class="keyword">enum</font> TToken {
+00002 tokNull, tokEOF, tokHeader, tokContent, tokTail, tokStyle,
+00003 tokWord, tokSpace, tokSync, tokControl, tokChar, tokFont};
+00004
+00005 <font class="keyword">enum</font> TCharacterAttribute { caBold, caSmallCaps, caItalic, caOTQuote, caRed,
+00006 caSuperscript, caUnderline, caSubscript};
+00007
+00008 <font class="comment">// TCharAttribs = set of TCharacterAttribute;</font>
+00009
+00010
+00011 <font class="keyword">struct </font>TBookNameRec {
+00012 string Name, Abbr;
+00013 <font class="keywordtype">char</font> Num;
+00014 }
+00015
+00016 <font class="keyword">const</font> <font class="keyword">struct </font>TBookNameRec TBookAbbr[116] = {
+00017 {<font class="stringliteral">"1 Chronicles"</font>, <font class="stringliteral">"1CH"</font>, 13}, <font class="comment">//0</font>
+00018 {<font class="stringliteral">"1 Corinthians"</font>, <font class="stringliteral">"1CO"</font>, 70}, <font class="comment">//1</font>
+00019 {<font class="stringliteral">"1 Esdras"</font>, <font class="stringliteral">"1E"</font>, 52}, <font class="comment">//2</font>
+00020 {<font class="stringliteral">"1 John"</font>, <font class="stringliteral">"1J"</font>, 86}, <font class="comment">//3</font>
+00021 {<font class="stringliteral">"1 Kings"</font>, <font class="stringliteral">"1K"</font>, 11}, <font class="comment">//4</font>
+00022 {<font class="stringliteral">"1 Maccabees"</font>, <font class="stringliteral">"1M"</font>, 50}, <font class="comment">//5</font>
+00023 {<font class="stringliteral">"1 Peter"</font>, <font class="stringliteral">"1P"</font>, 84}, <font class="comment">//6</font>
+00024 {<font class="stringliteral">"1 Samuel"</font>, <font class="stringliteral">"1S"</font>, 9}, <font class="comment">//7</font>
+00025 {<font class="stringliteral">"1 Thessalonians"</font>, <font class="stringliteral">"1TH"</font>, 76}, <font class="comment">//8</font>
+00026 {<font class="stringliteral">"1 Timothy"</font>, <font class="stringliteral">"1TI"</font>, 78}, <font class="comment">//9</font>
+00027 {<font class="stringliteral">"2 Chronicles"</font>, <font class="stringliteral">"2CH"</font>, 14}, <font class="comment">//10</font>
+00028 {<font class="stringliteral">"2 Corinthians"</font>, <font class="stringliteral">"2CO"</font>, 71}, <font class="comment">//11</font>
+00029 {<font class="stringliteral">"2 Esdras"</font>, <font class="stringliteral">"2E"</font>, 56}, <font class="comment">//12</font>
+00030 {<font class="stringliteral">"2 John"</font>, <font class="stringliteral">"2J"</font>, 87}, <font class="comment">//13</font>
+00031 {<font class="stringliteral">"2 Kings"</font>, <font class="stringliteral">"2K"</font>, 12}, <font class="comment">//14</font>
+00032 {<font class="stringliteral">"2 Maccabees"</font>, <font class="stringliteral">"2M"</font>, 51}, <font class="comment">//15</font>
+00033 {<font class="stringliteral">"2 Peter"</font>, <font class="stringliteral">"2P"</font>, 85}, <font class="comment">//16</font>
+00034 {<font class="stringliteral">"2 Samuel"</font>, <font class="stringliteral">"2S"</font>, 10}, <font class="comment">//17</font>
+00035 {<font class="stringliteral">"2 Thessalonians"</font>, <font class="stringliteral">"2TH"</font>, 77}, <font class="comment">//18</font>
+00036 {<font class="stringliteral">"2 Timothy"</font>, <font class="stringliteral">"2TI"</font>, 79}, <font class="comment">//19</font>
+00037 {<font class="stringliteral">"3 John"</font>, <font class="stringliteral">"3J"</font>, 88}, <font class="comment">//20</font>
+00038 {<font class="stringliteral">"3 Maccabees"</font>, <font class="stringliteral">"3M"</font>, 55}, <font class="comment">//21</font>
+00039 {<font class="stringliteral">"4 Maccabees"</font>, <font class="stringliteral">"4M"</font>, 57}, <font class="comment">//22</font>
+00040 {<font class="stringliteral">"1 Chronicles"</font>, <font class="stringliteral">"1 CH"</font>, 13}, <font class="comment">//0</font>
+00041 {<font class="stringliteral">"1 Corinthians"</font>, <font class="stringliteral">"1 CO"</font>, 70}, <font class="comment">//1</font>
+00042 {<font class="stringliteral">"1 Esdras"</font>, <font class="stringliteral">"1 E"</font>, 52}, <font class="comment">//2</font>
+00043 {<font class="stringliteral">"1 John"</font>, <font class="stringliteral">"1 J"</font>, 86}, <font class="comment">//3</font>
+00044 {<font class="stringliteral">"1 Kings"</font>, <font class="stringliteral">"1 K"</font>, 11}, <font class="comment">//4</font>
+00045 {<font class="stringliteral">"1 Maccabees"</font>, <font class="stringliteral">"1 M"</font>, 50}, <font class="comment">//5</font>
+00046 {<font class="stringliteral">"1 Peter"</font>, <font class="stringliteral">"1 P"</font>, 84}, <font class="comment">//6</font>
+00047 {<font class="stringliteral">"1 Samuel"</font>, <font class="stringliteral">"1 S"</font>, 9}, <font class="comment">//7</font>
+00048 {<font class="stringliteral">"1 Thessalonians"</font>, <font class="stringliteral">"1 TH"</font>, 76}, <font class="comment">//8</font>
+00049 {<font class="stringliteral">"1 Timothy"</font>, <font class="stringliteral">"1 TI"</font>, 78}, <font class="comment">//9</font>
+00050 {<font class="stringliteral">"2 Chronicles"</font>, <font class="stringliteral">"2 CH"</font>, 14}, <font class="comment">//10</font>
+00051 {<font class="stringliteral">"2 Corinthians"</font>, <font class="stringliteral">"2 CO"</font>, 71}, <font class="comment">//11</font>
+00052 {<font class="stringliteral">"2 Esdras"</font>, <font class="stringliteral">"2 E"</font>, 56}, <font class="comment">//12</font>
+00053 {<font class="stringliteral">"2 John"</font>, <font class="stringliteral">"2 J"</font>, 87}, <font class="comment">//13</font>
+00054 {<font class="stringliteral">"2 Kings"</font>, <font class="stringliteral">"2 K"</font>, 12}, <font class="comment">//14</font>
+00055 {<font class="stringliteral">"2 Maccabees"</font>, <font class="stringliteral">"2 M"</font>, 51}, <font class="comment">//15</font>
+00056 {<font class="stringliteral">"2 Peter"</font>, <font class="stringliteral">"2 P"</font>, 85}, <font class="comment">//16</font>
+00057 {<font class="stringliteral">"2 Samuel"</font>, <font class="stringliteral">"2 S"</font>, 10}, <font class="comment">//17</font>
+00058 {<font class="stringliteral">"2 Thessalonians"</font>, <font class="stringliteral">"2 TH"</font>, 77}, <font class="comment">//18</font>
+00059 {<font class="stringliteral">"2 Timothy"</font>, <font class="stringliteral">"2 TI"</font>, 79}, <font class="comment">//19</font>
+00060 {<font class="stringliteral">"3 John"</font>, <font class="stringliteral">"3 J"</font>, 88}, <font class="comment">//20</font>
+00061 {<font class="stringliteral">"3 Maccabees"</font>, <font class="stringliteral">"3 M"</font>, 55}, <font class="comment">//21</font>
+00062 {<font class="stringliteral">"4 Maccabees"</font>, <font class="stringliteral">"4 M"</font>, 57}, <font class="comment">//22</font>
+00063 {<font class="stringliteral">"Acts"</font>, <font class="stringliteral">"AC"</font>, 68}, <font class="comment">//23</font>
+00064 {<font class="stringliteral">"Amos"</font>, <font class="stringliteral">"AM"</font>, 30}, <font class="comment">//24</font>
+00065 {<font class="stringliteral">"Prayer of Asariah and the Song of the Three Jews"</font>, <font class="stringliteral">"AZ"</font>, 47},
+00066 {<font class="stringliteral">"Baruch"</font>, <font class="stringliteral">"BA"</font>, 45}, <font class="comment">//26</font>
+00067 {<font class="stringliteral">"Bel and the Dragon"</font>,<font class="stringliteral">"BE"</font>, 49}, <font class="comment">//27</font>
+00068 {<font class="stringliteral">"Colossians"</font>, <font class="stringliteral">"CO"</font>, 75}, <font class="comment">//28</font>
+00069 {<font class="stringliteral">"Daniel"</font>, <font class="stringliteral">"DA"</font>, 27}, <font class="comment">//29</font>
+00070 {<font class="stringliteral">"Deuteronomy"</font>, <font class="stringliteral">"DE"</font>, 5}, <font class="comment">//30</font>
+00071 {<font class="stringliteral">"Deuteronomy"</font>, <font class="stringliteral">"DT"</font>, 5}, <font class="comment">//31</font>
+00072 {<font class="stringliteral">"Ecclesiasties"</font>, <font class="stringliteral">"EC"</font>, 21}, <font class="comment">//32</font>
+00073 {<font class="stringliteral">"Esther"</font>, <font class="stringliteral">"ES"</font>, 17}, <font class="comment">//33</font>
+00074 {<font class="stringliteral">"Exodus"</font>, <font class="stringliteral">"EX"</font>, 2}, <font class="comment">//34</font>
+00075 {<font class="stringliteral">"Ezekiel"</font>, <font class="stringliteral">"EZE"</font>, 26}, <font class="comment">//35</font>
+00076 {<font class="stringliteral">"Ezra"</font>, <font class="stringliteral">"EZR"</font>, 15}, <font class="comment">//36</font>
+00077 {<font class="stringliteral">"Galatians"</font>, <font class="stringliteral">"GA"</font>, 72}, <font class="comment">//37</font>
+00078 {<font class="stringliteral">"Genesis"</font>, <font class="stringliteral">"GE"</font>, 1}, <font class="comment">//38</font>
+00079 {<font class="stringliteral">"Genesis"</font>, <font class="stringliteral">"GN"</font>, 1}, <font class="comment">//39</font>
+00080 {<font class="stringliteral">"Ephesians"</font>, <font class="stringliteral">"EP"</font>, 73}, <font class="comment">//40</font>
+00081 {<font class="stringliteral">"Esther (Greek}"</font>, <font class="stringliteral">"GR"</font>, 42), <font class="comment">//41</font>
+00082 {<font class="stringliteral">"Habakkuk"</font>, <font class="stringliteral">"HAB"</font>, 35}, <font class="comment">//42</font>
+00083 {<font class="stringliteral">"Haggai"</font>, <font class="stringliteral">"HAG"</font>, 37}, <font class="comment">//43</font>
+00084 {<font class="stringliteral">"Hebrews"</font>, <font class="stringliteral">"HE"</font>, 82}, <font class="comment">//44</font>
+00085 {<font class="stringliteral">"Hosea"</font>, <font class="stringliteral">"HO"</font>, 28}, <font class="comment">//45</font>
+00086 {<font class="stringliteral">"Isaiah"</font>, <font class="stringliteral">"IS"</font>, 23}, <font class="comment">//46</font>
+00087 {<font class="stringliteral">"James"</font>, <font class="stringliteral">"JA"</font>, 83}, <font class="comment">//47</font>
+00088 {<font class="stringliteral">"Jeremiah"</font>, <font class="stringliteral">"JE"</font>, 24}, <font class="comment">//48</font>
+00089 {<font class="stringliteral">"Job"</font>, <font class="stringliteral">"JOB"</font>, 18}, <font class="comment">//49</font>
+00090 {<font class="stringliteral">"Joel"</font>, <font class="stringliteral">"JOE"</font>, 29}, <font class="comment">//50</font>
+00091 {<font class="stringliteral">"John"</font>, <font class="stringliteral">"JOH"</font>, 67}, <font class="comment">//51</font>
+00092 {<font class="stringliteral">"Jonah"</font>, <font class="stringliteral">"JON"</font>, 32}, <font class="comment">//52</font>
+00093 {<font class="stringliteral">"Joshua"</font>, <font class="stringliteral">"JOS"</font>, 6}, <font class="comment">//53</font>
+00094 {<font class="stringliteral">"Jude"</font>, <font class="stringliteral">"JUDE"</font>, 89}, <font class="comment">//54</font>
+00095 {<font class="stringliteral">"Judges"</font>, <font class="stringliteral">"JUDG"</font>, 7}, <font class="comment">//55</font>
+00096 {<font class="stringliteral">"Judith"</font>, <font class="stringliteral">"JUDI"</font>, 41}, <font class="comment">//56</font>
+00097 {<font class="stringliteral">"Lamentations"</font>, <font class="stringliteral">"LA"</font>, 25}, <font class="comment">//57</font>
+00098 {<font class="stringliteral">"Letter of Jeremiah"</font>,Abbr:<font class="stringliteral">"LET"</font>, 46}, <font class="comment">//58</font>
+00099 {<font class="stringliteral">"Leviticus"</font>, <font class="stringliteral">"LEV"</font>, 3}, <font class="comment">//59</font>
+00100 {<font class="stringliteral">"Luke"</font>, <font class="stringliteral">"LK"</font>, 66}, <font class="comment">//60</font>
+00101 {<font class="stringliteral">"Leviticus"</font>, <font class="stringliteral">"LV"</font>, 3}, <font class="comment">//61</font>
+00102 {<font class="stringliteral">"Luke"</font>, <font class="stringliteral">"LU"</font>, 66}, <font class="comment">//62</font>
+00103 {<font class="stringliteral">"Malachi"</font>, <font class="stringliteral">"MAL"</font>, 39}, <font class="comment">//63</font>
+00104 {<font class="stringliteral">"Prayer of Manasseh"</font>,Abbr:<font class="stringliteral">"MAN"</font>, 53}, <font class="comment">//64</font>
+00105 {<font class="stringliteral">"Mark"</font>, <font class="stringliteral">"MAR"</font>, 65}, <font class="comment">//65</font>
+00106 {<font class="stringliteral">"Matthew"</font>, <font class="stringliteral">"MAT"</font>, 64}, <font class="comment">//66</font>
+00107 {<font class="stringliteral">"Micah"</font>, <font class="stringliteral">"MI"</font>, 33}, <font class="comment">//67</font>
+00108 {<font class="stringliteral">"Nahum"</font>, <font class="stringliteral">"NA"</font>, 34}, <font class="comment">//68</font>
+00109 {<font class="stringliteral">"Nehemiah"</font>, <font class="stringliteral">"NE"</font>, 16}, <font class="comment">//69</font>
+00110 {<font class="stringliteral">"Numbers"</font>, <font class="stringliteral">"NU"</font>, 4}, <font class="comment">//70</font>
+00111 {<font class="stringliteral">"Obadiah"</font>, <font class="stringliteral">"OB"</font>, 31}, <font class="comment">//71</font>
+00112 {<font class="stringliteral">"Psalm 151"</font>, <font class="stringliteral">"P1"</font>, 54}, <font class="comment">//72</font>
+00113 {<font class="stringliteral">"Philemon"</font>, <font class="stringliteral">"PHILE"</font>, 81}, <font class="comment">//73</font>
+00114 {<font class="stringliteral">"Philippians"</font>, <font class="stringliteral">"PHILI"</font>, 74}, <font class="comment">//74</font>
+00115 {<font class="stringliteral">"Philemon"</font>, <font class="stringliteral">"PHM"</font>, 81}, <font class="comment">//75</font>
+00116 {<font class="stringliteral">"Philippians"</font>, <font class="stringliteral">"PHP"</font>, 74}, <font class="comment">//76</font>
+00117 {<font class="stringliteral">"Proverbs"</font>, <font class="stringliteral">"PR"</font>, 20}, <font class="comment">//77</font>
+00118 {<font class="stringliteral">"Psalms"</font>, <font class="stringliteral">"PS"</font>, 19}, <font class="comment">//78</font>
+00119 {<font class="stringliteral">"Revelation"</font>, <font class="stringliteral">"RE"</font>, 90}, <font class="comment">//79</font>
+00120 {<font class="stringliteral">"Romans"</font>, <font class="stringliteral">"RM"</font>, 69}, <font class="comment">//80</font>
+00121 {<font class="stringliteral">"Romans"</font>, <font class="stringliteral">"RO"</font>, 69}, <font class="comment">//81</font>
+00122 {<font class="stringliteral">"Ruth"</font>, <font class="stringliteral">"RU"</font>, 8}, <font class="comment">//82</font>
+00123 {<font class="stringliteral">"Sirach"</font>, <font class="stringliteral">"SI"</font>, 44}, <font class="comment">//83</font>
+00124 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SOL"</font>, 22}, <font class="comment">//84</font>
+00125 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SON"</font>, 22}, <font class="comment">//85</font>
+00126 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SS"</font>, 22}, <font class="comment">//86</font>
+00127 {<font class="stringliteral">"Susanna"</font>, <font class="stringliteral">"SU"</font>, 48}, <font class="comment">//87</font>
+00128 {<font class="stringliteral">"Titus"</font>, <font class="stringliteral">"TI"</font>, 80}, <font class="comment">//88</font>
+00129 {<font class="stringliteral">"Tobit"</font>, <font class="stringliteral">"TO"</font>, 40}, <font class="comment">//89</font>
+00130 {<font class="stringliteral">"Wisdom"</font>, <font class="stringliteral">"WI"</font>, 43}, <font class="comment">//90</font>
+00131 {<font class="stringliteral">"Zechariah"</font>, <font class="stringliteral">"ZEC"</font>, 38}, <font class="comment">//91</font>
+00132 {<font class="stringliteral">"Zephaniah"</font>, <font class="stringliteral">"ZEP"</font>, 36} <font class="comment">//92</font>
+00133 },
+00134
+00135 string BookFileName[91] = {
+00136 <font class="stringliteral">""</font>,<font class="stringliteral">"Genesis"</font>,<font class="stringliteral">"Exodus"</font>,<font class="stringliteral">"Lev"</font>,<font class="stringliteral">"Num"</font>,<font class="stringliteral">"Deut"</font>,<font class="stringliteral">"Joshua"</font>,<font class="stringliteral">"Judges"</font>, <font class="comment">// 0 - 7</font>
+00137 <font class="stringliteral">"Ruth"</font>,<font class="stringliteral">"1Sam"</font>,<font class="stringliteral">"2Sam"</font>,<font class="stringliteral">"1Kings"</font>,<font class="stringliteral">"2Kings"</font>,<font class="stringliteral">"1Chron"</font>,<font class="stringliteral">"2Chron"</font>, <font class="comment">// 8 - 14</font>
+00138 <font class="stringliteral">"Ezra"</font>,<font class="stringliteral">"Nehemiah"</font>,<font class="stringliteral">"Esther"</font>,<font class="stringliteral">"Job"</font>,<font class="stringliteral">"Psalms"</font>,<font class="stringliteral">"Proverbs"</font>, <font class="comment">// 15-20</font>
+00139 <font class="stringliteral">"Eccl"</font>,<font class="stringliteral">"Song"</font>,<font class="stringliteral">"Isaiah"</font>,<font class="stringliteral">"Jeremiah"</font>,<font class="stringliteral">"Lament"</font>,<font class="stringliteral">"Ezekiel"</font>, <font class="comment">// 21-26</font>
+00140 <font class="stringliteral">"Daniel"</font>,<font class="stringliteral">"Hosea"</font>,<font class="stringliteral">"Joel"</font>,<font class="stringliteral">"Amos"</font>,<font class="stringliteral">"Obadiah"</font>,<font class="stringliteral">"Jonah"</font>,<font class="stringliteral">"Micah"</font>, <font class="comment">// 27-33</font>
+00141 <font class="stringliteral">"Nahum"</font>,<font class="stringliteral">"Habakkuk"</font>,<font class="stringliteral">"Zeph"</font>,<font class="stringliteral">"Haggai"</font>,<font class="stringliteral">"Zech"</font>,<font class="stringliteral">"Malachi"</font>, <font class="comment">// 34-39</font>
+00142 <font class="stringliteral">"Tobit"</font>,<font class="stringliteral">"Judith"</font>,<font class="stringliteral">"Esther"</font>,<font class="stringliteral">"Wisdom"</font>,<font class="stringliteral">"Sirach"</font>,<font class="stringliteral">"Baruch"</font>, <font class="comment">// 40-45</font>
+00143 <font class="stringliteral">"Let"</font>,<font class="stringliteral">"Azar"</font>,<font class="stringliteral">"Susanna"</font>,<font class="stringliteral">"Bel"</font>,<font class="stringliteral">"1Mac"</font>,<font class="stringliteral">"2Mac"</font>,<font class="stringliteral">"1Esdras"</font>, <font class="comment">// 46-52</font>
+00144 <font class="stringliteral">"Man"</font>,<font class="stringliteral">"P1"</font>,<font class="stringliteral">"3Mac"</font>,<font class="stringliteral">"2Esdras"</font>,<font class="stringliteral">"4Mac"</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>, <font class="comment">// 53-63</font>
+00145 <font class="stringliteral">"Matthew"</font>,<font class="stringliteral">"Mark"</font>,<font class="stringliteral">"Luke"</font>,<font class="stringliteral">"John"</font>,<font class="stringliteral">"Acts"</font>,<font class="stringliteral">"Romans"</font>,<font class="stringliteral">"1Cor"</font>, <font class="comment">// 64-70</font>
+00146 <font class="stringliteral">"2Cor"</font>,<font class="stringliteral">"Gal"</font>,<font class="stringliteral">"Eph"</font>,<font class="stringliteral">"Philip"</font>,<font class="stringliteral">"Col"</font>,<font class="stringliteral">"1Thes"</font>,<font class="stringliteral">"2Thes"</font>,<font class="stringliteral">"1Tim"</font>, <font class="comment">// 71-78</font>
+00147 <font class="stringliteral">"2Tim"</font>,<font class="stringliteral">"Titus"</font>,<font class="stringliteral">"Philemon"</font>,<font class="stringliteral">"Hebrews"</font>,<font class="stringliteral">"James"</font>,<font class="stringliteral">"1Peter"</font>, <font class="comment">// 79-84</font>
+00148 <font class="stringliteral">"2Peter"</font>,<font class="stringliteral">"1John"</font>,<font class="stringliteral">"2John"</font>,<font class="stringliteral">"3John"</font>,<font class="stringliteral">"Jude"</font>,<font class="stringliteral">"Rev"</font>}; <font class="comment">// 85-90</font>
+00149
+00150 <font class="keyword">class </font>TReadGBF {
+00151 <font class="keyword">private</font>:
+00152 FILE *fp;
+00153 string FName, TokenLine;
+00154 <font class="keywordtype">int</font> TokenPos;
+00155 <font class="keywordtype">bool</font> fFileIsOpen, fParagraphEnd, fInTitle, fInPsalmBookTitle, fInHebrewTitle, fInSectionTitle;
+00156
+00157 <font class="keyword">public</font>:
+00158 string sBook, sChapter, sVerse, sMode;
+00159 string sContext; <font class="comment">// Last text type (header, body, or tail)</font>
+00160 string sTitle; <font class="comment">// Title of this book of the Bible</font>
+00161 string sPsalmBookTitle; <font class="comment">// Title of this Psalm book</font>
+00162 string sHebrewTitle; <font class="comment">// Psalm Hebrew title</font>
+00163 string sSectionTitle; <font class="comment">// Section headings</font>
+00164 string sDate;
+00165 string sFontName;
+00166 <font class="keywordtype">int</font> iTotalWords;
+00167 <font class="keywordtype">char</font> chJustification, chDirection;
+00168 <font class="keywordtype">bool</font> fIndent, fPoetry;
+00169 <font class="keywordtype">int</font> CharAttribs;
+00170 <font class="keywordtype">char</font> bBk, bChap, bVs, bWd;
+00171
+00172 <font class="keywordtype">bool</font> Init(<font class="keyword">const</font> string sFileName);
+00173 <font class="keywordtype">void</font> Done();
+00174 string GetToken(TToken &amp;TokenKind);
+00175 end;
+00176
+00177 <font class="keyword">class </font>TWriteGBF {
+00178 <font class="keyword">private</font>:
+00179 F: TextFile;
+00180 FName, LineOut: string;
+00181 fFileIsOpen: <font class="keywordtype">boolean</font>;
+00182 bBk, bChap, bVs, bWd: byte;
+00183
+00184 <font class="keyword">public</font>
+00185
+00186 function Init(<font class="keyword">const</font> sFileName: string): boolean;
+00187 function Done: <font class="keywordtype">boolean</font>;
+00188 procedure Out(<font class="keyword">const</font> s: string);
+00189 end;
+00190
+00191 function isletter(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
+00192 function isinword(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
+00193 function IsDigit(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
+00194 function IsUpper(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
+00195 function ConformCase(<font class="keyword">const</font> sPat, sSrc: string): string;
+00196 function BookNameToNumber(<font class="keyword">const</font> sBookName: string): byte;
+00197
+00198 implementation
+00199
+00200 function isletter(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
+00201 begin
+00202 <font class="keywordflow">case</font> ch of
+00203 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: isletter := <font class="keyword">true</font>;
+00204 <font class="charliteral">'a'</font>..<font class="charliteral">'z'</font>: isletter := <font class="keyword">true</font>;
+00205 <font class="keywordflow">else</font>
+00206 isletter := <font class="keyword">false</font>;
+00207 end;
+00208 end;
+00209
+00210 function isinword(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
+00211 begin
+00212 <font class="keywordflow">case</font> ch of
+00213 <font class="charliteral">'-'</font>: isinword := <font class="keyword">true</font>;
+00214 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: isinword := <font class="keyword">true</font>;
+00215 <font class="charliteral">'a'</font>..<font class="charliteral">'z'</font>: isinword := <font class="keyword">true</font>;
+00216 <font class="keywordflow">else</font>
+00217 isinword := <font class="keyword">false</font>;
+00218 end;
+00219 end;
+00220
+00221 function IsUpper(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
+00222 begin
+00223 <font class="keywordflow">case</font> ch of
+00224 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: IsUpper := <font class="keyword">true</font>;
+00225 <font class="keywordflow">else</font>
+00226 IsUpper := <font class="keyword">false</font>;
+00227 end;
+00228 end;
+00229
+00230 function IsDigit(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
+00231 begin
+00232 <font class="keywordflow">case</font> ch of
+00233 <font class="charliteral">'0'</font>..<font class="charliteral">'9'</font>: IsDigit := <font class="keyword">true</font>;
+00234 <font class="keywordflow">else</font>
+00235 IsDigit := <font class="keyword">false</font>;
+00236 end;
+00237 end;
+00238
+00239
+00240 function MatchAbbrev(<font class="keyword">const</font> sName, sAbbrev: string): boolean;
+00241 var i: integer;
+00242 begin
+00243 <font class="keywordflow">if</font> Length(sName) &lt; Length(sAbbrev) then
+00244 Result := <font class="keyword">false</font>
+00245 <font class="keywordflow">else</font>
+00246 Result := <font class="keyword">true</font>;
+00247 i := 1;
+00248 <font class="keywordflow">while</font> (i &lt;= Length(sAbbrev)) and Result <font class="keywordflow">do</font>
+00249 begin
+00250 <font class="keywordflow">if</font> UpCase(sName[i]) &lt;&gt; sAbbrev[i] then
+00251 Result := <font class="keyword">false</font>;
+00252 inc(i);
+00253 end;
+00254 end;
+00255
+00256 function BookNameToNumber(<font class="keyword">const</font> sBookName: string): byte;
+00257 var i: integer;
+00258 begin
+00259 Result := 0;
+00260 <font class="keywordflow">try</font>
+00261 <font class="keywordflow">if</font> IsDigit(sBookName[Length(sBookName)]) and IsDigit(sBookName[1]) then
+00262 Result := StrToInt(sBookName);
+00263 except
+00264 Result := 0;
+00265 end;
+00266 i := 0;
+00267 <font class="keywordflow">while</font> (Result = 0) and (i &lt;= 115) <font class="keywordflow">do</font> <font class="comment">// Yuk! Linear search.</font>
+00268 begin
+00269 <font class="keywordflow">if</font> MatchAbbrev(sBookName,BookAbbr[i].Abbr) then
+00270 begin
+00271 Result := BookAbbr[i].Num;
+00272 end;
+00273 inc(i);
+00274 end;
+00275 end;
+00276
+00277 function BookNumberToName(<font class="keyword">const</font> bBookNum: byte): string;
+00278 begin
+00279 <font class="keywordflow">if</font> bBookNum &lt;= 115 then
+00280 Result := BookAbbr[bBookNum].Name
+00281 <font class="keywordflow">else</font>
+00282 Result := '';
+00283 end;
+00284
+00285 function ConformCase(<font class="keyword">const</font> sPat, sSrc: string): string;
+00286 var i: integer;
+00287 begin
+00288 Result := sSrc;
+00289 <font class="keywordflow">if</font> (Length(sPat) &gt; 0) and (Length(sSrc) &gt; 0) then
+00290 begin
+00291 Result := LowerCase(sSrc);
+00292 <font class="keywordflow">if</font> IsUpper(sPat[1]) then
+00293 Result[1] := UpCase(Result[1]);
+00294 <font class="keywordflow">if</font> (Length(sPat) &gt; 1) and (Length(sSrc) &gt; 1) then
+00295 begin
+00296 <font class="keywordflow">if</font> IsUpper(sPat[2]) then
+00297 begin
+00298 <font class="keywordflow">for</font> i := 2 to Length(Result) <font class="keywordflow">do</font>
+00299 Result[i] := UpCase(Result[i]);
+00300 end;
+00301 end;
+00302 end;
+00303 end;
+00304
+00305 function TReadGBF.Init(<font class="keyword">const</font> sFileName: string): boolean;
+00306 var s: string;
+00307 tok: TToken;
+00308 begin
+00309 <font class="keywordflow">try</font>
+00310 fParagraphEnd := <font class="keyword">false</font>;
+00311 bBk := 0;
+00312 bChap := 0;
+00313 bVs := 0;
+00314 bWd := 0;
+00315 iTotalWords := 0;
+00316 FName := sFileName;
+00317 Assign(F, FName);
+00318 reset(F);
+00319 readln(F, TokenLine);
+00320 TokenPos := 1;
+00321 fFileIsOpen := <font class="keyword">true</font>;
+00322 repeat
+00323 s := GetToken(tok)
+00324 until (tok = tokEOF) or ((tok = tokHeader) and (s[3] = <font class="charliteral">'0'</font>));
+00325 Init := <font class="keyword">true</font>;
+00326 except
+00327 Init := <font class="keyword">false</font>;
+00328 fFileIsOpen := <font class="keyword">false</font>;
+00329 end
+00330 end;
+00331
+00332 procedure TReadGBF.Done;
+00333 begin
+00334 <font class="keywordflow">if</font> fFileIsOpen then
+00335 begin
+00336 closefile(F);
+00337 fFileIsOpen := <font class="keyword">false</font>;
+00338 end;
+00339 end;
+00340
+00341 function TReadGBF.GetToken(var TokenKind: TToken): string;
+00342 var m: integer;
+00343 begin
+00344 Result := '';
+00345 TokenKind := tokNull;
+00346 <font class="keywordflow">if</font> TokenPos = 0 then
+00347 begin
+00348 <font class="keywordflow">if</font> (not fFileIsOpen) or EOF(F) then
+00349 TokenKind := tokEOF
+00350 <font class="keywordflow">else</font>
+00351 begin
+00352 ReadLn(F,TokenLine);
+00353 TokenPos := 1;
+00354 end;
+00355 end;
+00356 <font class="keywordflow">if</font> TokenKind &lt;&gt; tokEOF then
+00357 begin
+00358 m := Length(TokenLine);
+00359 <font class="keywordflow">if</font> TokenPos &gt; m then
+00360 begin
+00361 TokenKind := tokSpace;
+00362 <font class="keywordflow">if</font> fParagraphEnd then
+00363 fParagraphEnd := <font class="keyword">false</font>
+00364 <font class="keywordflow">else</font>
+00365 Result := <font class="charliteral">' '</font>;
+00366 TokenPos := 0;
+00367 end
+00368 <font class="keywordflow">else</font>
+00369 begin
+00370 <font class="keywordflow">if</font> (TokenLine[TokenPos] = <font class="charliteral">'&lt;'</font>) then
+00371 begin
+00372 fParagraphEnd := <font class="keyword">false</font>;
+00373 repeat
+00374 Result := Result + TokenLine[TokenPos];
+00375 inc(TokenPos);
+00376 until (TokenLine[TokenPos] = <font class="charliteral">'&gt;'</font>) or (TokenPos &gt; m);
+00377 Result := Result + <font class="charliteral">'&gt;'</font>;
+00378 inc(TokenPos);
+00379 <font class="keywordflow">case</font> result[2] of
+00380 <font class="charliteral">'B'</font>: begin <font class="comment">// File body text type</font>
+00381 TokenKind := tokContent;
+00382 sContext := Result;
+00383 end;
+00384 <font class="charliteral">'C'</font>: begin <font class="comment">// Special characters</font>
+00385 TokenKind := tokControl;
+00386 <font class="keywordflow">if</font> (Result[3] = <font class="charliteral">'M'</font>) or (Result[3] = <font class="charliteral">'L'</font>) then
+00387 fParagraphEnd := <font class="keyword">true</font>;
+00388 end;
+00389 <font class="charliteral">'D'</font>: begin <font class="comment">// Direction</font>
+00390 TokenKind := tokControl;
+00391 chDirection := Result[3];
+00392 end;
+00393 <font class="charliteral">'H'</font>: begin
+00394 TokenKind := tokHeader;
+00395 sContext := Result;
+00396 end;
+00397 <font class="charliteral">'F'</font>: begin <font class="comment">// Font attributes</font>
+00398 TokenKind := tokFont;
+00399 <font class="keywordflow">case</font> Result[3] of
+00400 <font class="charliteral">'B'</font>: CharAttribs := CharAttribs + [caBold];
+00401 <font class="charliteral">'C'</font>: CharAttribs := CharAttribs + [caSmallCaps];
+00402 <font class="charliteral">'I'</font>: CharAttribs := CharAttribs + [caItalic];
+00403 <font class="charliteral">'N'</font>: sFontName := copy(Result,4,Length(Result)-4);
+00404 <font class="charliteral">'O'</font>: CharAttribs := CharAttribs + [caOTQuote];
+00405 <font class="charliteral">'R'</font>: CharAttribs := CharAttribs + [caRed];
+00406 <font class="charliteral">'S'</font>: CharAttribs := CharAttribs + [caSuperscript];
+00407 <font class="charliteral">'U'</font>: CharAttribs := CharAttribs + [caUnderline];
+00408 <font class="charliteral">'V'</font>: CharAttribs := CharAttribs + [caSubscript];
+00409 <font class="charliteral">'b'</font>: CharAttribs := CharAttribs - [caBold];
+00410 <font class="charliteral">'c'</font>: CharAttribs := CharAttribs - [caSmallCaps];
+00411 <font class="charliteral">'i'</font>: CharAttribs := CharAttribs - [caItalic];
+00412 <font class="charliteral">'n'</font>: sFontName := '';
+00413 <font class="charliteral">'o'</font>: CharAttribs := CharAttribs - [caOTQuote];
+00414 <font class="charliteral">'r'</font>: CharAttribs := CharAttribs - [caRed];
+00415 <font class="charliteral">'s'</font>: CharAttribs := CharAttribs - [caSuperscript];
+00416 <font class="charliteral">'u'</font>: CharAttribs := CharAttribs - [caUnderline];
+00417 <font class="charliteral">'v'</font>: CharAttribs := CharAttribs - [caSubscript];
+00418
+00419 end;
+00420 end;
+00421 <font class="charliteral">'J'</font>: begin <font class="comment">// Justification</font>
+00422 TokenKind := tokStyle;
+00423 chJustification := Result[3];
+00424 end;
+00425 <font class="charliteral">'P'</font>: begin <font class="comment">// Poetry/prose, indent</font>
+00426 TokenKind := tokControl;
+00427 <font class="keywordflow">case</font> Result[3] of
+00428 <font class="charliteral">'I'</font>: fIndent := <font class="keyword">true</font>;
+00429 <font class="charliteral">'P'</font>: fPoetry := <font class="keyword">true</font>;
+00430 <font class="charliteral">'i'</font>: fIndent := <font class="keyword">false</font>;
+00431 <font class="charliteral">'p'</font>: fPoetry := <font class="keyword">false</font>;
+00432 end;
+00433 end;
+00434 <font class="charliteral">'R'</font>: begin <font class="comment">// References and footnotes</font>
+00435 TokenKind := tokControl;
+00436 end;
+00437 <font class="charliteral">'S'</font>: begin <font class="comment">// sync mark</font>
+00438 TokenKind := TokSync;
+00439 <font class="keywordflow">case</font> Result[3] of
+00440 <font class="charliteral">'B'</font>: begin <font class="comment">// Book</font>
+00441 sBook := system.copy(Result, 4, length(Result)-4);
+00442 sPsalmBookTitle := '';
+00443 <font class="keywordflow">if</font> sBook = '' then
+00444 begin
+00445 inc(bBk);
+00446 sBook := BookNumberToName(bBk);
+00447 end
+00448 <font class="keywordflow">else</font>
+00449 bBk := BookNameToNumber(sBook);
+00450 sTitle := sBook;
+00451 end;
+00452 <font class="charliteral">'C'</font>: begin <font class="comment">//chapter</font>
+00453 sChapter := system.copy(Result, 4, length(Result)-4);
+00454 <font class="keywordflow">if</font> sChapter = '' then
+00455 begin
+00456 inc(bChap);
+00457 sChapter := IntToStr(bChap);
+00458 end
+00459 <font class="keywordflow">else</font>
+00460 begin
+00461 <font class="keywordflow">try</font>
+00462 bChap := StrToInt(sChapter);
+00463 except
+00464 showmessage('Non-numeric chapter: '+sBook+<font class="charliteral">' '</font>+sChapter);
+00465 end;
+00466 end;
+00467 sHebrewTitle := '';
+00468 end;
+00469 <font class="charliteral">'V'</font>: begin <font class="comment">// Verse</font>
+00470 bWd := 0;
+00471 sVerse := system.copy(Result, 4, length(Result)-4);
+00472 <font class="keywordflow">if</font> sVerse = '' then
+00473 begin
+00474 inc(bVs);
+00475 sVerse := IntToStr(bVs);
+00476 end
+00477 <font class="keywordflow">else</font>
+00478 begin
+00479 <font class="keywordflow">try</font>
+00480 bVs := StrToInt(sVerse);
+00481 except
+00482 showmessage('Non-numeric verse: '+sBook+<font class="charliteral">' '</font>+sChapter+<font class="charliteral">':'</font>+sVerse);
+00483 end;
+00484 end;
+00485 end;
+00486 <font class="charliteral">'D'</font>: begin <font class="comment">// Date</font>
+00487 sDate := system.copy(Result, 3, length(Result)-4);
+00488 end;
+00489 end;
+00490 end;
+00491 <font class="charliteral">'T'</font>: begin <font class="comment">// Titles</font>
+00492 TokenKind := TokContent;
+00493 <font class="keywordflow">case</font> Result[3] of
+00494 <font class="charliteral">'B'</font>:
+00495 begin
+00496 sPsalmBookTitle := '';
+00497 fInPsalmBookTitle := <font class="keyword">true</font>;
+00498 end;
+00499 <font class="charliteral">'b'</font>: fInPsalmBookTitle := <font class="keyword">true</font>;
+00500 <font class="charliteral">'H'</font>:
+00501 begin
+00502 sHebrewTitle := '';
+00503 fInHebrewTitle := <font class="keyword">true</font>;
+00504 end;
+00505 <font class="charliteral">'h'</font>: fInHebrewTitle := <font class="keyword">false</font>;
+00506 <font class="charliteral">'S'</font>:
+00507 begin
+00508 sSectionTitle := '';
+00509 fInSectionTitle := <font class="keyword">true</font>;
+00510 end;
+00511 <font class="charliteral">'s'</font>: fInSectionTitle := <font class="keyword">false</font>;
+00512 <font class="charliteral">'T'</font>:
+00513 begin
+00514 sTitle := '';
+00515 fInTitle := <font class="keyword">true</font>;
+00516 end;
+00517 <font class="charliteral">'t'</font>: fInTitle := <font class="keyword">false</font>;
+00518 end;
+00519 end;
+00520 <font class="charliteral">'Z'</font>: begin <font class="comment">// File tail</font>
+00521 TokenKind := tokTail;
+00522 sContext := Result;
+00523 <font class="keywordflow">if</font> Result[3] = <font class="charliteral">'Z'</font> then
+00524 done;
+00525 end;
+00526 <font class="keywordflow">else</font>
+00527 TokenKind := TokControl;
+00528
+00529 end;
+00530 end
+00531 <font class="keywordflow">else</font> <font class="keywordflow">if</font> isletter(TokenLine[TokenPos]) then
+00532 begin {Word}
+00533 fParagraphEnd := <font class="keyword">false</font>;
+00534 TokenKind := tokWord;
+00535 repeat
+00536 Result := Result + TokenLine[TokenPos];
+00537 inc(TokenPos);
+00538 until (TokenPos &gt; m) or (not isinword(TokenLine[TokenPos]));
+00539 inc(bWd);
+00540 inc(iTotalWords);
+00541 end
+00542 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((TokenLine[TokenPos] = <font class="charliteral">' '</font>) or (TokenLine[TokenPos] = #9)) then
+00543 begin
+00544 fParagraphEnd := <font class="keyword">false</font>;
+00545 TokenKind := tokSpace;
+00546 Result := Result + TokenLine[TokenPos];
+00547 inc(TokenPos);
+00548 end
+00549 <font class="keywordflow">else</font>
+00550 begin
+00551 fParagraphEnd := <font class="keyword">false</font>;
+00552 TokenKind := tokChar;
+00553 Result := Result + TokenLine[TokenPos];
+00554 inc(TokenPos);
+00555 end
+00556 end;
+00557 end;
+00558 <font class="keywordflow">if</font> ((TokenKind = tokWord) or (TokenKind = tokSpace) or
+00559 (TokenKind = tokChar)) then
+00560 begin
+00561 <font class="keywordflow">if</font> fInTitle then
+00562 sTitle := sTitle + Result
+00563 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInPsalmBookTitle then
+00564 sPsalmBookTitle := sPsalmBookTitle + Result
+00565 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInHebrewTitle then
+00566 sHebrewTitle := sHebrewTitle + Result
+00567 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInSectionTitle then
+00568 sSectionTitle := sSectionTitle + Result;
+00569 end;
+00570 end;
+00571
+00572 function TWriteGBF.Init(<font class="keyword">const</font> sFileName: string): boolean;
+00573 begin
+00574 <font class="keywordflow">try</font>
+00575 bBk := 0;
+00576 bChap := 0;
+00577 bVs := 0;
+00578 bWd := 0;
+00579 LineOut := '';
+00580 FName := sFileName;
+00581 Assign(F, FName);
+00582 filemode := 1;
+00583 rewrite(F);
+00584 fFileIsOpen := <font class="keyword">true</font>;
+00585 Init := <font class="keyword">true</font>;
+00586 except
+00587 Init := <font class="keyword">false</font>;
+00588 fFileIsOpen := <font class="keyword">false</font>;
+00589 end
+00590 end;
+00591
+00592 function TWriteGBF.Done: <font class="keywordtype">boolean</font>;
+00593 begin
+00594 <font class="keywordflow">try</font>
+00595 <font class="keywordflow">if</font> fFileIsOpen then
+00596 begin
+00597 <font class="keywordflow">if</font> LineOut &lt;&gt; '' then
+00598 begin
+00599 WriteLn(F, LineOut);
+00600 LineOut := '';
+00601 end;
+00602 CloseFile(F);
+00603 end;
+00604 Done := <font class="keyword">true</font>;
+00605 except
+00606 Done := <font class="keyword">false</font>;
+00607 end;
+00608 end;
+00609
+00610 procedure TWriteGBF.Out(<font class="keyword">const</font> s: string);
+00611 var sPrint, sSave, sBook, sChapter, sVerse: string;
+00612 i: integer;
+00613 b: byte;
+00614 begin
+00615 <font class="keywordflow">if</font> (Length(s) &gt; 0) and IsLetter(s[1]) then
+00616 begin
+00617 inc(bWd);
+00618 LineOut := LineOut + s;
+00619 end
+00620 <font class="keywordflow">else</font> <font class="keywordflow">if</font> Length(s) &gt; 3 then
+00621 begin
+00622 <font class="keywordflow">if</font> (s[1] = <font class="charliteral">'&lt;'</font>) and (s[2] = <font class="charliteral">'S'</font>) then
+00623 begin
+00624 <font class="keywordflow">case</font> s[3] of
+00625 <font class="charliteral">'B'</font>: begin <font class="comment">// Book</font>
+00626 sBook := system.copy(s, 4, length(s)-4);
+00627 <font class="keywordflow">if</font> sBook = '' then
+00628 begin
+00629 inc(bBk);
+00630 LineOut := LineOut + s;
+00631 end
+00632 <font class="keywordflow">else</font>
+00633 begin
+00634 b := bBk;
+00635 bBk := BookNameToNumber(sBook);
+00636 <font class="keywordflow">if</font> b &lt;&gt; bBk then
+00637 LineOut := LineOut + s;
+00638 end;
+00639 end;
+00640 <font class="charliteral">'C'</font>: begin <font class="comment">//chapter</font>
+00641 sChapter := system.copy(s, 4, length(s)-4);
+00642 <font class="keywordflow">if</font> sChapter = '' then
+00643 begin
+00644 inc(bChap);
+00645 LineOut := LineOut + s;
+00646 end
+00647 <font class="keywordflow">else</font>
+00648 begin
+00649 <font class="keywordflow">try</font>
+00650 <font class="comment">// b := bChap;</font>
+00651 bChap := StrToInt(sChapter);
+00652 <font class="comment">// if b &lt;&gt; bChap then</font>
+00653 LineOut := LineOut + s;
+00654 except
+00655 showmessage('Non-numeric chapter: '+sBook+<font class="charliteral">' '</font>+sChapter);
+00656 end;
+00657 end;
+00658 end;
+00659 <font class="charliteral">'V'</font>: begin <font class="comment">// Verse</font>
+00660 bWd := 0;
+00661 sVerse := system.copy(s, 4, length(s)-4);
+00662 <font class="keywordflow">if</font> sVerse = '' then
+00663 begin
+00664 inc(bVs);
+00665 LineOut := LineOut + s;
+00666 end
+00667 <font class="keywordflow">else</font>
+00668 begin
+00669 <font class="keywordflow">try</font>
+00670 <font class="comment">// b := bVs;</font>
+00671 bVs := StrToInt(sVerse);
+00672 <font class="comment">// if b &lt;&gt; bVs then</font>
+00673 LineOut := LineOut + s;
+00674 except
+00675 showmessage('Non-numeric verse: '+sBook+<font class="charliteral">' '</font>+sChapter+<font class="charliteral">':'</font>+sVerse);
+00676 end;
+00677 end;
+00678 end;
+00679 <font class="keywordflow">else</font>
+00680 LineOut := LineOut + s;
+00681 end
+00682 end
+00683 <font class="keywordflow">else</font>
+00684 LineOut := LineOut + s; <font class="comment">// Not a sync mark</font>
+00685 end
+00686 <font class="keywordflow">else</font> <font class="comment">// other token, space, or punctuation</font>
+00687 LineOut := LineOut + s; <font class="comment">// Length &lt;= 3</font>
+00688 <font class="keywordflow">if</font> ((s = '&lt;CM&gt;') or (s = '&lt;CL&gt;')) then
+00689 begin
+00690 <font class="keywordflow">if</font> (Length(LineOut) &gt; 78) then
+00691 begin
+00692 i := 78;
+00693 <font class="keywordflow">while</font> (i &gt; 0) and (LineOut[i] &lt;&gt; <font class="charliteral">' '</font>) <font class="keywordflow">do</font>
+00694 dec(i);
+00695 <font class="keywordflow">if</font> i &lt; 1 then
+00696 begin
+00697 WriteLn(F,LineOut);
+00698 LineOut := '';
+00699 end
+00700 <font class="keywordflow">else</font>
+00701 begin
+00702 sPrint := system.copy(LineOut,1,i-1);
+00703 sSave := system.copy(LineOut,i+1,Length(LineOut)-i);
+00704 WriteLn(F,sPrint);
+00705 WriteLn(F, sSave);
+00706 LineOut := '';
+00707 end
+00708 end
+00709 <font class="keywordflow">else</font>
+00710 begin
+00711 WriteLn(F, LineOut);
+00712 LineOut := '';
+00713 end
+00714 end
+00715 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (Length(LineOut) &gt; 78) then
+00716 begin
+00717 i := 78;
+00718 <font class="keywordflow">while</font> (i &gt; 0) and (LineOut[i] &lt;&gt; <font class="charliteral">' '</font>) <font class="keywordflow">do</font>
+00719 dec(i);
+00720 <font class="keywordflow">if</font> i &lt; 1 then
+00721 begin
+00722 WriteLn(F,LineOut);
+00723 LineOut := '';
+00724 end
+00725 <font class="keywordflow">else</font>
+00726 begin
+00727 sPrint := system.copy(LineOut,1,i-1);
+00728 sSave := system.copy(LineOut,i+1,Length(LineOut)-i);
+00729 WriteLn(F,sPrint);
+00730 LineOut := sSave;
+00731 end
+00732 end
+00733 end;
+00734
+00735 end.
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbf_8h-source.html b/doc/api-documentation/html/gbf_8h-source.html
new file mode 100644
index 0000000..6feefcb
--- /dev/null
+++ b/doc/api-documentation/html/gbf_8h-source.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbf.h</h1><div class="fragment"><pre>00001 <font class="comment">/* Header for module GBF, generated by p2c */</font>
+00002 <font class="preprocessor">#ifndef GBF_H</font>
+00003 <font class="preprocessor"></font><font class="preprocessor">#define GBF_H</font>
+00004 <font class="preprocessor"></font><font class="comment">/* p2c: Gbf.pas, line 5: Warning: Could not find module SYSUTILS [271] */</font>
+00005
+00006
+00007 <font class="preprocessor">#include "sysutils.h"</font>
+00008 <font class="comment">/* p2c: Gbf.pas, line 5: Warning: Could not find module DIALOGS [271] */</font>
+00009 <font class="preprocessor">#include "dialogs.h"</font>
+00010
+00011
+00012 <font class="preprocessor">#ifdef GBF_G</font>
+00013 <font class="preprocessor"></font><font class="preprocessor"># define vextern</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00015 <font class="preprocessor"></font><font class="preprocessor"># define vextern extern</font>
+00016 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00017 <font class="preprocessor"></font>
+00018
+00019
+00020 <font class="keyword">typedef</font> <font class="keyword">enum</font> {
+00021 tokNull, tokEOF, tokHeader, tokContent, tokTail, tokStyle, tokWord,
+00022 tokSpace, tokSync, tokControl, tokChar, tokFont
+00023 } TToken;
+00024 <font class="keyword">typedef</font> <font class="keyword">enum</font> {
+00025 caBold, caSmallCaps, caItalic, caOTQuote, caRed, caSuperscript, caUnderline,
+00026 caSubscript
+00027 } TCharacterAttribute;
+00028 <font class="keyword">typedef</font> <font class="keywordtype">long</font> TCharAttribs;
+00029
+00030
+00031
+00032 <font class="keyword">typedef</font> <font class="keyword">struct </font>TBookNameRec {
+00033 Char Name[256], Abbr[256];
+00034 uchar Num;
+00035 } TBookNameRec;
+00036
+00037 <font class="keyword">typedef</font> TBookNameRec TBookAbbr[116];
+00038 <font class="comment">/* p2c: Gbf.pas, line 25: </font>
+00039 <font class="comment"> * Warning: Expected an expression, found a '/' [227] */</font>
+00040 <font class="comment">/* p2c: Gbf.pas, line 25: </font>
+00041 <font class="comment"> * Warning: Expected an expression, found a '/' [227] */</font>
+00042 <font class="comment">/* p2c: Gbf.pas, line 25: Warning: Division by zero [163] */</font>
+00043 <font class="comment">/* p2c: Gbf.pas, line 26: Warning: Division by zero [163] */</font>
+00044 <font class="comment">/* p2c: Gbf.pas, line 26: Warning: Expected a ')', found a '(' [227] */</font>
+00045 <font class="comment">/* p2c: Gbf.pas, line 144: </font>
+00046 <font class="comment"> * Warning: Expected an expression, found a '/' [227] */</font>
+00047 <font class="comment">/* p2c: Gbf.pas, line 144: </font>
+00048 <font class="comment"> * Warning: Expected an expression, found a '/' [227] */</font>
+00049 <font class="comment">/* p2c: Gbf.pas, line 144: Warning: Division by zero [163] */</font>
+00050 <font class="comment">/* p2c: Gbf.pas, line 144: Warning: Division by zero [163] */</font>
+00051 <font class="comment">/* p2c: Gbf.pas, line 145: Warning: Mixing non-strings with strings [170] */</font>
+00052 <font class="comment">/* p2c: Gbf.pas, line 145: </font>
+00053 <font class="comment"> * Warning: Expected a ')', found a string literal [227] */</font>
+00054
+00055
+00056 <font class="keyword">extern</font> TBookAbbr BookAbbr;
+00057
+00058 <font class="keyword">extern</font> Char BookFileName[91][256];
+00059
+00060 vextern Char STR1[256];
+00061
+00062
+00063 <font class="preprocessor">#undef vextern</font>
+00064 <font class="preprocessor"></font>
+00065 <font class="preprocessor">#endif </font><font class="comment">/*GBF_H*/</font>
+00066
+00067 <font class="comment">/* End. */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbffootnotes_8cpp-source.html b/doc/api-documentation/html/gbffootnotes_8cpp-source.html
new file mode 100644
index 0000000..0e15deb
--- /dev/null
+++ b/doc/api-documentation/html/gbffootnotes_8cpp-source.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbffootnotes.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbffootnotes.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * gbffootnotes - SWFilter decendant to hide or show footnotes</font>
+00004 <font class="comment"> * in a GBF module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;gbffootnotes.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFFootnotes::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFFootnotes::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFFootnotes::optName[] = <font class="stringliteral">"Footnotes"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFFootnotes::optTip[] = <font class="stringliteral">"Toggles Footnotes On and Off if they exist"</font>;
+00021
+00022
+00023 GBFFootnotes::GBFFootnotes() {
+00024 option = <font class="keyword">false</font>;
+00025 options.push_back(on);
+00026 options.push_back(off);
+00027 }
+00028
+00029
+00030 GBFFootnotes::~GBFFootnotes() {
+00031 }
+00032
+00033 <font class="keywordtype">void</font> GBFFootnotes::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00034 {
+00035 option = (!stricmp(ival, on));
+00036 }
+00037
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> *GBFFootnotes::getOptionValue()
+00039 {
+00040 <font class="keywordflow">return</font> (option) ? on:off;
+00041 }
+00042
+00043 <font class="keywordtype">char</font> GBFFootnotes::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00044 {
+00045 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want footnotes</font>
+00046 <font class="keywordtype">char</font> *to, *from, token[4096]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00051
+00052 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00053 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00054 memmove(&amp;text[maxlen - len], text, len);
+00055 from = &amp;text[maxlen - len];
+00056 }
+00057 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00058
+00059 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00061 intoken = <font class="keyword">true</font>;
+00062 tokpos = 0;
+00063 <font class="comment">// memset(token, 0, 4096);</font>
+00064 token[0] = 0;
+00065 token[1] = 0;
+00066 token[2] = 0;
+00067 <font class="keywordflow">continue</font>;
+00068 }
+00069 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00070 intoken = <font class="keyword">false</font>;
+00071 <font class="keywordflow">switch</font> (*token) {
+00072 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>: <font class="comment">// Reference</font>
+00073 <font class="keywordflow">switch</font>(token[1]) {
+00074 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// Begin footnote</font>
+00075 hide = <font class="keyword">true</font>;
+00076 <font class="keywordflow">break</font>;
+00077 <font class="keywordflow">case</font> <font class="charliteral">'f'</font>: <font class="comment">// end footnote</font>
+00078 hide = <font class="keyword">false</font>;
+00079 <font class="keywordflow">break</font>;
+00080 }
+00081 <font class="keywordflow">continue</font>; <font class="comment">// skip token</font>
+00082 <font class="keywordflow">case</font> <font class="charliteral">'W'</font>:
+00083 <font class="keywordflow">if</font> (token[1] == <font class="charliteral">'T'</font>) {
+00084 <font class="keywordflow">switch</font> (token[2]) {
+00085 <font class="keywordflow">case</font> <font class="charliteral">'P'</font>:
+00086 <font class="keywordflow">case</font> <font class="charliteral">'S'</font>:
+00087 <font class="keywordflow">case</font> <font class="charliteral">'A'</font>:
+00088 <font class="keywordflow">continue</font>; <font class="comment">// remove this token</font>
+00089 <font class="keywordflow">default</font>:
+00090 <font class="keywordflow">break</font>;
+00091 }
+00092 }
+00093 }
+00094 <font class="comment">// if not a footnote token, keep token in text</font>
+00095 <font class="keywordflow">if</font> (!hide) {
+00096 *to++ = <font class="charliteral">'&lt;'</font>;
+00097 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00098 *to++ = *tok;
+00099 *to++ = <font class="charliteral">'&gt;'</font>;
+00100 }
+00101 <font class="keywordflow">continue</font>;
+00102 }
+00103 <font class="keywordflow">if</font> (intoken) {
+00104 <font class="keywordflow">if</font> (tokpos &lt; 4090)
+00105 token[tokpos++] = *from;
+00106 token[tokpos+2] = 0; <font class="comment">// +2 cuz we init token with 2 extra '0' because of switch statement</font>
+00107 }
+00108 <font class="keywordflow">else</font> {
+00109 <font class="keywordflow">if</font> (!hide) {
+00110 *to++ = *from;
+00111 }
+00112 }
+00113 }
+00114 *to++ = 0;
+00115 *to = 0;
+00116 }
+00117 <font class="keywordflow">return</font> 0;
+00118 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbffootnotes_8h-source.html b/doc/api-documentation/html/gbffootnotes_8h-source.html
new file mode 100644
index 0000000..abc8281
--- /dev/null
+++ b/doc/api-documentation/html/gbffootnotes_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbffootnotes.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbffootnotes.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: gbffootnotes_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef GBFFOOTNOTES_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define GBFFOOTNOTES_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_g_b_f_footnotes.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_footnotes.html">GBFFootnotes</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_g_b_f_footnotes.html">GBFFootnotes</a> ();
+00040 <font class="keyword">virtual</font> ~ GBFFootnotes ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfheadings_8cpp-source.html b/doc/api-documentation/html/gbfheadings_8cpp-source.html
new file mode 100644
index 0000000..967cc06
--- /dev/null
+++ b/doc/api-documentation/html/gbfheadings_8cpp-source.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfheadings.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfheadings.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * gbfheadings - SWFilter decendant to hide or show headings</font>
+00004 <font class="comment"> * in a GBF module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;gbfheadings.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFHeadings::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFHeadings::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFHeadings::optName[] = <font class="stringliteral">"Headings"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFHeadings::optTip[] = <font class="stringliteral">"Toggles Headings On and Off if they exist"</font>;
+00021
+00022
+00023 GBFHeadings::GBFHeadings() {
+00024 option = <font class="keyword">false</font>;
+00025 options.push_back(on);
+00026 options.push_back(off);
+00027 }
+00028
+00029
+00030 GBFHeadings::~GBFHeadings() {
+00031 }
+00032
+00033 <font class="keywordtype">void</font> GBFHeadings::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00034 {
+00035 option = (!stricmp(ival, on));
+00036 }
+00037
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> *GBFHeadings::getOptionValue()
+00039 {
+00040 <font class="keywordflow">return</font> (option) ? on:off;
+00041 }
+00042
+00043 <font class="keywordtype">char</font> GBFHeadings::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00044 {
+00045 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want headings</font>
+00046 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00051
+00052 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00053 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00054 memmove(&amp;text[maxlen - len], text, len);
+00055 from = &amp;text[maxlen - len];
+00056 }
+00057 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00058
+00059 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00061 intoken = <font class="keyword">true</font>;
+00062 tokpos = 0;
+00063 <font class="comment">// memset(token, 0, 2048);</font>
+00064 token[0] = 0;
+00065 token[1] = 0;
+00066 token[2] = 0;
+00067 <font class="keywordflow">continue</font>;
+00068 }
+00069 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00070 intoken = <font class="keyword">false</font>;
+00071 <font class="keywordflow">switch</font> (*token) {
+00072 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Reference</font>
+00073 <font class="keywordflow">switch</font>(token[1]) {
+00074 <font class="keywordflow">case</font> <font class="charliteral">'S'</font>: <font class="comment">// Begin heading</font>
+00075 hide = <font class="keyword">true</font>;
+00076 <font class="keywordflow">break</font>;
+00077 <font class="keywordflow">case</font> <font class="charliteral">'s'</font>: <font class="comment">// end heading</font>
+00078 hide = <font class="keyword">false</font>;
+00079 <font class="keywordflow">break</font>;
+00080 }
+00081 <font class="keywordflow">continue</font>; <font class="comment">// skip token</font>
+00082 }
+00083 <font class="comment">// if not a heading token, keep token in text</font>
+00084 <font class="keywordflow">if</font> (!hide) {
+00085 *to++ = <font class="charliteral">'&lt;'</font>;
+00086 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00087 *to++ = *tok;
+00088 *to++ = <font class="charliteral">'&gt;'</font>;
+00089 }
+00090 <font class="keywordflow">continue</font>;
+00091 }
+00092 <font class="keywordflow">if</font> (intoken) {
+00093 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00094 token[tokpos++] = *from;
+00095 token[tokpos+2] = 0;
+00096 }
+00097 <font class="keywordflow">else</font> {
+00098 <font class="keywordflow">if</font> (!hide) {
+00099 *to++ = *from;
+00100 }
+00101 }
+00102 }
+00103 *to++ = 0;
+00104 *to = 0;
+00105 }
+00106 <font class="keywordflow">return</font> 0;
+00107 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfheadings_8h-source.html b/doc/api-documentation/html/gbfheadings_8h-source.html
new file mode 100644
index 0000000..215c2a9
--- /dev/null
+++ b/doc/api-documentation/html/gbfheadings_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfheadings.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfheadings.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: gbfheadings_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef GBFHEADINGS_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define GBFHEADINGS_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_g_b_f_headings.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_headings.html">GBFHeadings</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_g_b_f_headings.html">GBFHeadings</a> ();
+00040 <font class="keyword">virtual</font> ~ GBFHeadings ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfhtml_8cpp-source.html b/doc/api-documentation/html/gbfhtml_8cpp-source.html
new file mode 100644
index 0000000..9c26fcb
--- /dev/null
+++ b/doc/api-documentation/html/gbfhtml_8cpp-source.html
@@ -0,0 +1,550 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfhtml.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfhtml.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> gbfhtml.cpp - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Thu Jun 24 1999</font>
+00005 <font class="comment"> copyright : (C) 1999 by Torsten Uhlmann</font>
+00006 <font class="comment"> email : TUhlmann@gmx.de</font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. *</font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;gbfhtml.h&gt;</font>
+00021
+00022
+00023 GBFHTML::GBFHTML()
+00024 {
+00025 }
+00026
+00027
+00028 <font class="keywordtype">char</font> GBFHTML::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00029 {
+00030 <font class="keywordtype">char</font> *to, *from, token[2048];
+00031 <font class="keywordtype">int</font> tokpos = 0;
+00032 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00033 <font class="keywordtype">bool</font> hasFootnotePreTag = <font class="keyword">false</font>;
+00034 <font class="keywordtype">bool</font> isRightJustified = <font class="keyword">false</font>;
+00035 <font class="keywordtype">bool</font> isCentered = <font class="keyword">false</font>;
+00036 <font class="keywordtype">int</font> len;
+00037 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok;
+00038
+00039 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00040 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00041 memmove(&amp;text[maxlen - len], text, len);
+00042 from = &amp;text[maxlen - len];
+00043 }
+00044 <font class="keywordflow">else</font>
+00045 from = text; <font class="comment">// -------------------------------</font>
+00046
+00047 <font class="keywordflow">for</font> (to = text; *from; from++)
+00048 {
+00049 <font class="keywordflow">if</font> (*from == <font class="charliteral">'\n'</font>) {
+00050 *from = <font class="charliteral">' '</font>;
+00051 }
+00052 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00053 intoken = <font class="keyword">true</font>;
+00054 tokpos = 0;
+00055 token[0] = 0;
+00056 token[1] = 0;
+00057 token[2] = 0;
+00058 <font class="keywordflow">continue</font>;
+00059 }
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) {
+00061 intoken = <font class="keyword">false</font>;
+00062 <font class="comment">// process desired tokens</font>
+00063 <font class="keywordflow">switch</font> (*token) {
+00064 <font class="keywordflow">case</font> <font class="charliteral">'W'</font>: <font class="comment">// Strongs</font>
+00065 <font class="keywordflow">switch</font>(token[1])
+00066 {
+00067 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>: <font class="comment">// Greek</font>
+00068 <font class="keywordflow">case</font> <font class="charliteral">'H'</font>: <font class="comment">// Hebrew</font>
+00069 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Tense</font>
+00070 *to++ = <font class="charliteral">' '</font>;
+00071 *to++ = <font class="charliteral">'&lt;'</font>;
+00072 *to++ = <font class="charliteral">'s'</font>;
+00073 *to++ = <font class="charliteral">'m'</font>;
+00074 *to++ = <font class="charliteral">'a'</font>;
+00075 *to++ = <font class="charliteral">'l'</font>;
+00076 *to++ = <font class="charliteral">'l'</font>;
+00077 *to++ = <font class="charliteral">'&gt;'</font>;
+00078 *to++ = <font class="charliteral">'&lt;'</font>;
+00079 *to++ = <font class="charliteral">'e'</font>;
+00080 *to++ = <font class="charliteral">'m'</font>;
+00081 *to++ = <font class="charliteral">'&gt;'</font>;
+00082 <font class="keywordflow">for</font> (tok = token+2; *tok; tok++)
+00083 *to++ = *tok;
+00084 *to++ = <font class="charliteral">'&lt;'</font>;
+00085 *to++ = <font class="charliteral">'/'</font>;
+00086 *to++ = <font class="charliteral">'e'</font>;
+00087 *to++ = <font class="charliteral">'m'</font>;
+00088 *to++ = <font class="charliteral">'&gt;'</font>;
+00089 *to++ = <font class="charliteral">'&lt;'</font>;
+00090 *to++ = <font class="charliteral">'/'</font>;
+00091 *to++ = <font class="charliteral">'s'</font>;
+00092 *to++ = <font class="charliteral">'m'</font>;
+00093 *to++ = <font class="charliteral">'a'</font>;
+00094 *to++ = <font class="charliteral">'l'</font>;
+00095 *to++ = <font class="charliteral">'l'</font>;
+00096 *to++ = <font class="charliteral">'&gt;'</font>;
+00097 *to++ = <font class="charliteral">' '</font>;
+00098 <font class="keywordflow">continue</font>;
+00099 }
+00100 <font class="keywordflow">break</font>;
+00101 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>:
+00102 <font class="keywordflow">switch</font>(token[1])
+00103 {
+00104 <font class="keywordflow">case</font> <font class="charliteral">'X'</font>:
+00105 *to++ = <font class="charliteral">'&lt;'</font>;
+00106 *to++ = <font class="charliteral">'a'</font>;
+00107 *to++ = <font class="charliteral">' '</font>;
+00108 *to++ = <font class="charliteral">'h'</font>;
+00109 *to++ = <font class="charliteral">'r'</font>;
+00110 *to++ = <font class="charliteral">'e'</font>;
+00111 *to++ = <font class="charliteral">'f'</font>;
+00112 *to++ = <font class="charliteral">'='</font>;
+00113 *to++ = <font class="charliteral">'\"'</font>;
+00114 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++) {
+00115 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'&lt;'</font> &amp;&amp; *tok+1 != <font class="charliteral">'R'</font> &amp;&amp; *tok+2 != <font class="charliteral">'x'</font>) {
+00116 *to++ = *tok;
+00117 }
+00118 <font class="keywordflow">else</font> {
+00119 <font class="keywordflow">break</font>;
+00120 }
+00121 }
+00122 *to++ = <font class="charliteral">'\"'</font>;
+00123 *to++ = <font class="charliteral">'&gt;'</font>;
+00124 <font class="keywordflow">continue</font>;
+00125 <font class="keywordflow">case</font> <font class="charliteral">'x'</font>:
+00126 *to++ = <font class="charliteral">'&lt;'</font>;
+00127 *to++ = <font class="charliteral">'/'</font>;
+00128 *to++ = <font class="charliteral">'a'</font>;
+00129 *to++ = <font class="charliteral">'&gt;'</font>;
+00130 <font class="keywordflow">continue</font>;
+00131 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">//word(s) explained in footnote</font>
+00132 *to++ = <font class="charliteral">'&lt;'</font>;
+00133 *to++ = <font class="charliteral">'i'</font>;
+00134 *to++ = <font class="charliteral">'&gt;'</font>;
+00135 hasFootnotePreTag = <font class="keyword">true</font>; <font class="comment">//we have the RB tag</font>
+00136 <font class="keywordflow">continue</font>;
+00137 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// footnote begin</font>
+00138 <font class="keywordflow">if</font> (hasFootnotePreTag) {
+00139 *to++ = <font class="charliteral">'&lt;'</font>;
+00140 *to++ = <font class="charliteral">'/'</font>;
+00141 *to++ = <font class="charliteral">'i'</font>;
+00142 *to++ = <font class="charliteral">'&gt;'</font>;
+00143 *to++ = <font class="charliteral">' '</font>;
+00144 }
+00145 *to++ = <font class="charliteral">'&lt;'</font>;
+00146 *to++ = <font class="charliteral">'f'</font>;
+00147 *to++ = <font class="charliteral">'o'</font>;
+00148 *to++ = <font class="charliteral">'n'</font>;
+00149 *to++ = <font class="charliteral">'t'</font>;
+00150 *to++ = <font class="charliteral">' '</font>;
+00151 *to++ = <font class="charliteral">'c'</font>;
+00152 *to++ = <font class="charliteral">'o'</font>;
+00153 *to++ = <font class="charliteral">'l'</font>;
+00154 *to++ = <font class="charliteral">'o'</font>;
+00155 *to++ = <font class="charliteral">'r'</font>;
+00156 *to++ = <font class="charliteral">'='</font>;
+00157 *to++ = <font class="charliteral">'\"'</font>;
+00158 *to++ = <font class="charliteral">'#'</font>;
+00159 *to++ = <font class="charliteral">'8'</font>;
+00160 *to++ = <font class="charliteral">'0'</font>;
+00161 *to++ = <font class="charliteral">'0'</font>;
+00162 *to++ = <font class="charliteral">'0'</font>;
+00163 *to++ = <font class="charliteral">'0'</font>;
+00164 *to++ = <font class="charliteral">'0'</font>;
+00165 *to++ = <font class="charliteral">'\"'</font>;
+00166 *to++ = <font class="charliteral">'&gt;'</font>;
+00167
+00168 *to++ = <font class="charliteral">' '</font>;
+00169 *to++ = <font class="charliteral">'&lt;'</font>;
+00170 *to++ = <font class="charliteral">'s'</font>;
+00171 *to++ = <font class="charliteral">'m'</font>;
+00172 *to++ = <font class="charliteral">'a'</font>;
+00173 *to++ = <font class="charliteral">'l'</font>;
+00174 *to++ = <font class="charliteral">'l'</font>;
+00175 *to++ = <font class="charliteral">'&gt;'</font>;
+00176 *to++ = <font class="charliteral">'('</font>;
+00177
+00178 <font class="keywordflow">continue</font>;
+00179 <font class="keywordflow">case</font> <font class="charliteral">'f'</font>: <font class="comment">// footnote end</font>
+00180 *to++ = <font class="charliteral">')'</font>;
+00181 *to++ = <font class="charliteral">'&lt;'</font>;
+00182 *to++ = <font class="charliteral">'/'</font>;
+00183 *to++ = <font class="charliteral">'s'</font>;
+00184 *to++ = <font class="charliteral">'m'</font>;
+00185 *to++ = <font class="charliteral">'a'</font>;
+00186 *to++ = <font class="charliteral">'l'</font>;
+00187 *to++ = <font class="charliteral">'l'</font>;
+00188 *to++ = <font class="charliteral">'&gt;'</font>;
+00189 *to++ = <font class="charliteral">' '</font>;
+00190 *to++ = <font class="charliteral">'&lt;'</font>;
+00191 *to++ = <font class="charliteral">'/'</font>;
+00192 *to++ = <font class="charliteral">'f'</font>;
+00193 *to++ = <font class="charliteral">'o'</font>;
+00194 *to++ = <font class="charliteral">'n'</font>;
+00195 *to++ = <font class="charliteral">'t'</font>;
+00196 *to++ = <font class="charliteral">'&gt;'</font>;
+00197 hasFootnotePreTag = <font class="keyword">false</font>;
+00198 <font class="keywordflow">continue</font>;
+00199 }
+00200 <font class="keywordflow">break</font>;
+00201
+00202 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// font tags</font>
+00203 <font class="keywordflow">switch</font>(token[1])
+00204 {
+00205 <font class="keywordflow">case</font> <font class="charliteral">'I'</font>: <font class="comment">// italic start</font>
+00206 *to++ = <font class="charliteral">'&lt;'</font>;
+00207 *to++ = <font class="charliteral">'i'</font>;
+00208 *to++ = <font class="charliteral">'&gt;'</font>;
+00209 <font class="keywordflow">continue</font>;
+00210 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>: <font class="comment">// italic end</font>
+00211 *to++ = <font class="charliteral">'&lt;'</font>;
+00212 *to++ = <font class="charliteral">'/'</font>;
+00213 *to++ = <font class="charliteral">'i'</font>;
+00214 *to++ = <font class="charliteral">'&gt;'</font>;
+00215 <font class="keywordflow">continue</font>;
+00216 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">// bold start</font>
+00217 *to++ = <font class="charliteral">'&lt;'</font>;
+00218 *to++ = <font class="charliteral">'b'</font>;
+00219 *to++ = <font class="charliteral">'&gt;'</font>;
+00220 <font class="keywordflow">continue</font>;
+00221 <font class="keywordflow">case</font> <font class="charliteral">'b'</font>: <font class="comment">// bold end</font>
+00222 *to++ = <font class="charliteral">'&lt;'</font>;
+00223 *to++ = <font class="charliteral">'/'</font>;
+00224 *to++ = <font class="charliteral">'b'</font>;
+00225 *to++ = <font class="charliteral">'&gt;'</font>;
+00226 <font class="keywordflow">continue</font>;
+00227 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>: <font class="comment">// words of Jesus begin</font>
+00228 *to++ = <font class="charliteral">'&lt;'</font>;
+00229 *to++ = <font class="charliteral">'f'</font>;
+00230 *to++ = <font class="charliteral">'o'</font>;
+00231 *to++ = <font class="charliteral">'n'</font>;
+00232 *to++ = <font class="charliteral">'t'</font>;
+00233 *to++ = <font class="charliteral">' '</font>;
+00234 *to++ = <font class="charliteral">'c'</font>;
+00235 *to++ = <font class="charliteral">'o'</font>;
+00236 *to++ = <font class="charliteral">'l'</font>;
+00237 *to++ = <font class="charliteral">'o'</font>;
+00238 *to++ = <font class="charliteral">'r'</font>;
+00239 *to++ = <font class="charliteral">'='</font>;
+00240 *to++ = <font class="charliteral">'#'</font>;
+00241 *to++ = <font class="charliteral">'F'</font>;
+00242 *to++ = <font class="charliteral">'F'</font>;
+00243 *to++ = <font class="charliteral">'0'</font>;
+00244 *to++ = <font class="charliteral">'0'</font>;
+00245 *to++ = <font class="charliteral">'0'</font>;
+00246 *to++ = <font class="charliteral">'0'</font>;
+00247 *to++ = <font class="charliteral">'&gt;'</font>;
+00248 <font class="keywordflow">continue</font>;
+00249 <font class="keywordflow">case</font> <font class="charliteral">'r'</font>: <font class="comment">// words of Jesus end</font>
+00250 *to++ = <font class="charliteral">'&lt;'</font>;
+00251 *to++ = <font class="charliteral">'/'</font>;
+00252 *to++ = <font class="charliteral">'f'</font>;
+00253 *to++ = <font class="charliteral">'o'</font>;
+00254 *to++ = <font class="charliteral">'n'</font>;
+00255 *to++ = <font class="charliteral">'t'</font>;
+00256 *to++ = <font class="charliteral">'&gt;'</font>;
+00257 <font class="keywordflow">continue</font>;
+00258 <font class="keywordflow">case</font> <font class="charliteral">'U'</font>: <font class="comment">// Underline start</font>
+00259 *to++ = <font class="charliteral">'&lt;'</font>;
+00260 *to++ = <font class="charliteral">'u'</font>;
+00261 *to++ = <font class="charliteral">'&gt;'</font>;
+00262 <font class="keywordflow">continue</font>;
+00263 <font class="keywordflow">case</font> <font class="charliteral">'u'</font>: <font class="comment">// Underline end</font>
+00264 *to++ = <font class="charliteral">'&lt;'</font>;
+00265 *to++ = <font class="charliteral">'/'</font>;
+00266 *to++ = <font class="charliteral">'u'</font>;
+00267 *to++ = <font class="charliteral">'&gt;'</font>;
+00268 <font class="keywordflow">continue</font>;
+00269 <font class="keywordflow">case</font> <font class="charliteral">'O'</font>: <font class="comment">// Old Testament quote begin</font>
+00270 *to++ = <font class="charliteral">'&lt;'</font>;
+00271 *to++ = <font class="charliteral">'c'</font>;
+00272 *to++ = <font class="charliteral">'i'</font>;
+00273 *to++ = <font class="charliteral">'t'</font>;
+00274 *to++ = <font class="charliteral">'e'</font>;
+00275 *to++ = <font class="charliteral">'&gt;'</font>;
+00276 <font class="keywordflow">continue</font>;
+00277 <font class="keywordflow">case</font> <font class="charliteral">'o'</font>: <font class="comment">// Old Testament quote end</font>
+00278 *to++ = <font class="charliteral">'&lt;'</font>;
+00279 *to++ = <font class="charliteral">'/'</font>;
+00280 *to++ = <font class="charliteral">'c'</font>;
+00281 *to++ = <font class="charliteral">'i'</font>;
+00282 *to++ = <font class="charliteral">'t'</font>;
+00283 *to++ = <font class="charliteral">'e'</font>;
+00284 *to++ = <font class="charliteral">'&gt;'</font>;
+00285 <font class="keywordflow">continue</font>;
+00286 <font class="keywordflow">case</font> <font class="charliteral">'S'</font>: <font class="comment">// Superscript begin</font>
+00287 *to++ = <font class="charliteral">'&lt;'</font>;
+00288 *to++ = <font class="charliteral">'s'</font>;
+00289 *to++ = <font class="charliteral">'u'</font>;
+00290 *to++ = <font class="charliteral">'p'</font>;
+00291 *to++ = <font class="charliteral">'&gt;'</font>;
+00292 <font class="keywordflow">continue</font>;
+00293 <font class="keywordflow">case</font> <font class="charliteral">'s'</font>: <font class="comment">// Superscript end</font>
+00294 *to++ = <font class="charliteral">'&lt;'</font>;
+00295 *to++ = <font class="charliteral">'/'</font>;
+00296 *to++ = <font class="charliteral">'s'</font>;
+00297 *to++ = <font class="charliteral">'u'</font>;
+00298 *to++ = <font class="charliteral">'p'</font>;
+00299 *to++ = <font class="charliteral">'&gt;'</font>;
+00300 <font class="keywordflow">continue</font>;
+00301 <font class="keywordflow">case</font> <font class="charliteral">'V'</font>: <font class="comment">// Subscript begin</font>
+00302 *to++ = <font class="charliteral">'&lt;'</font>;
+00303 *to++ = <font class="charliteral">'s'</font>;
+00304 *to++ = <font class="charliteral">'u'</font>;
+00305 *to++ = <font class="charliteral">'b'</font>;
+00306 *to++ = <font class="charliteral">'&gt;'</font>;
+00307 <font class="keywordflow">continue</font>;
+00308 <font class="keywordflow">case</font> <font class="charliteral">'v'</font>: <font class="comment">// Subscript end</font>
+00309 *to++ = <font class="charliteral">'&lt;'</font>;
+00310 *to++ = <font class="charliteral">'/'</font>;
+00311 *to++ = <font class="charliteral">'s'</font>;
+00312 *to++ = <font class="charliteral">'u'</font>;
+00313 *to++ = <font class="charliteral">'b'</font>;
+00314 *to++ = <font class="charliteral">'&gt;'</font>;
+00315 <font class="keywordflow">continue</font>;
+00316 <font class="keywordflow">case</font> <font class="charliteral">'N'</font>:
+00317 *to++ = <font class="charliteral">'&lt;'</font>;
+00318 *to++ = <font class="charliteral">'f'</font>;
+00319 *to++ = <font class="charliteral">'o'</font>;
+00320 *to++ = <font class="charliteral">'n'</font>;
+00321 *to++ = <font class="charliteral">'t'</font>;
+00322 *to++ = <font class="charliteral">' '</font>;
+00323 *to++ = <font class="charliteral">'f'</font>;
+00324 *to++ = <font class="charliteral">'a'</font>;
+00325 *to++ = <font class="charliteral">'c'</font>;
+00326 *to++ = <font class="charliteral">'e'</font>;
+00327 *to++ = <font class="charliteral">'='</font>;
+00328 *to++ = <font class="charliteral">'"'</font>;
+00329 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00330 *to++ = *tok;
+00331 *to++ = <font class="charliteral">'"'</font>;
+00332 *to++ = <font class="charliteral">'&gt;'</font>;
+00333 <font class="keywordflow">continue</font>;
+00334 <font class="keywordflow">case</font> <font class="charliteral">'n'</font>:
+00335 *to++ = <font class="charliteral">'&lt;'</font>;
+00336 *to++ = <font class="charliteral">'/'</font>;
+00337 *to++ = <font class="charliteral">'f'</font>;
+00338 *to++ = <font class="charliteral">'o'</font>;
+00339 *to++ = <font class="charliteral">'n'</font>;
+00340 *to++ = <font class="charliteral">'t'</font>;
+00341 *to++ = <font class="charliteral">'&gt;'</font>;
+00342 <font class="keywordflow">continue</font>;
+00343 }
+00344 <font class="keywordflow">break</font>;
+00345 <font class="keywordflow">case</font> <font class="charliteral">'C'</font>: <font class="comment">// special character tags</font>
+00346 <font class="keywordflow">switch</font>(token[1])
+00347 {
+00348 <font class="keywordflow">case</font> <font class="charliteral">'A'</font>: <font class="comment">// ASCII value</font>
+00349 *to++ = (char)atoi(&amp;token[2]);
+00350 <font class="keywordflow">continue</font>;
+00351 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>:
+00352 <font class="comment">//*to++ = ' ';</font>
+00353 <font class="keywordflow">continue</font>;
+00354 <font class="keywordflow">case</font> <font class="charliteral">'L'</font>: <font class="comment">// line break</font>
+00355 *to++ = <font class="charliteral">'&lt;'</font>;
+00356 *to++ = <font class="charliteral">'b'</font>;
+00357 *to++ = <font class="charliteral">'r'</font>;
+00358 *to++ = <font class="charliteral">' '</font>;
+00359 *to++ = <font class="charliteral">'/'</font>;
+00360 *to++ = <font class="charliteral">'&gt;'</font>;
+00361 *to++ = <font class="charliteral">' '</font>;
+00362 <font class="keywordflow">continue</font>;
+00363 <font class="keywordflow">case</font> <font class="charliteral">'M'</font>: <font class="comment">// new paragraph</font>
+00364 *to++ = <font class="charliteral">'&lt;'</font>;
+00365 *to++ = <font class="charliteral">'b'</font>;
+00366 *to++ = <font class="charliteral">'r'</font>;
+00367 *to++ = <font class="charliteral">' '</font>;
+00368 *to++ = <font class="charliteral">'/'</font>;
+00369 *to++ = <font class="charliteral">'&gt;'</font>;
+00370 <font class="keywordflow">continue</font>;
+00371 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>:
+00372 <font class="comment">//*to++ = ' ';</font>
+00373 <font class="keywordflow">continue</font>;
+00374 }
+00375 <font class="keywordflow">break</font>;
+00376 <font class="keywordflow">case</font> <font class="charliteral">'J'</font>: <font class="comment">//Justification</font>
+00377 <font class="keywordflow">switch</font>(token[1])
+00378 {
+00379 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>: <font class="comment">//right</font>
+00380 *to++ = <font class="charliteral">'&lt;'</font>;
+00381 *to++ = <font class="charliteral">'d'</font>;
+00382 *to++ = <font class="charliteral">'i'</font>;
+00383 *to++ = <font class="charliteral">'v'</font>;
+00384 *to++ = <font class="charliteral">' '</font>;
+00385 *to++ = <font class="charliteral">'a'</font>;
+00386 *to++ = <font class="charliteral">'l'</font>;
+00387 *to++ = <font class="charliteral">'i'</font>;
+00388 *to++ = <font class="charliteral">'g'</font>;
+00389 *to++ = <font class="charliteral">'n'</font>;
+00390 *to++ = <font class="charliteral">'='</font>;
+00391 *to++ = <font class="charliteral">'\"'</font>;
+00392 *to++ = <font class="charliteral">'r'</font>;
+00393 *to++ = <font class="charliteral">'i'</font>;
+00394 *to++ = <font class="charliteral">'g'</font>;
+00395 *to++ = <font class="charliteral">'h'</font>;
+00396 *to++ = <font class="charliteral">'t'</font>;
+00397 *to++ = <font class="charliteral">'\"'</font>;
+00398 *to++ = <font class="charliteral">'&gt;'</font>;
+00399 isRightJustified = <font class="keyword">true</font>;
+00400 <font class="keywordflow">continue</font>;
+00401
+00402 <font class="keywordflow">case</font> <font class="charliteral">'C'</font>: <font class="comment">//center</font>
+00403 *to++ = <font class="charliteral">'&lt;'</font>;
+00404 *to++ = <font class="charliteral">'d'</font>;
+00405 *to++ = <font class="charliteral">'i'</font>;
+00406 *to++ = <font class="charliteral">'v'</font>;
+00407 *to++ = <font class="charliteral">' '</font>;
+00408 *to++ = <font class="charliteral">'a'</font>;
+00409 *to++ = <font class="charliteral">'l'</font>;
+00410 *to++ = <font class="charliteral">'i'</font>;
+00411 *to++ = <font class="charliteral">'g'</font>;
+00412 *to++ = <font class="charliteral">'n'</font>;
+00413 *to++ = <font class="charliteral">'='</font>;
+00414 *to++ = <font class="charliteral">'\"'</font>;
+00415 *to++ = <font class="charliteral">'c'</font>;
+00416 *to++ = <font class="charliteral">'e'</font>;
+00417 *to++ = <font class="charliteral">'n'</font>;
+00418 *to++ = <font class="charliteral">'t'</font>;
+00419 *to++ = <font class="charliteral">'e'</font>;
+00420 *to++ = <font class="charliteral">'r'</font>;
+00421 *to++ = <font class="charliteral">'\"'</font>;
+00422 *to++ = <font class="charliteral">'&gt;'</font>;
+00423 isCentered = <font class="keyword">true</font>;
+00424 <font class="keywordflow">continue</font>;
+00425
+00426 <font class="keywordflow">case</font> <font class="charliteral">'L'</font>: <font class="comment">//left, reset right and center</font>
+00427 <font class="keywordflow">if</font> (isCentered) {
+00428 *to++ = <font class="charliteral">'&lt;'</font>;
+00429 *to++ = <font class="charliteral">'/'</font>;
+00430 *to++ = <font class="charliteral">'c'</font>;
+00431 *to++ = <font class="charliteral">'e'</font>;
+00432 *to++ = <font class="charliteral">'n'</font>;
+00433 *to++ = <font class="charliteral">'t'</font>;
+00434 *to++ = <font class="charliteral">'e'</font>;
+00435 *to++ = <font class="charliteral">'r'</font>;
+00436 *to++ = <font class="charliteral">'&gt;'</font>;
+00437 isCentered = <font class="keyword">false</font>;
+00438 }
+00439 <font class="keywordflow">if</font> (isRightJustified) {
+00440 *to++ = <font class="charliteral">'&lt;'</font>;
+00441 *to++ = <font class="charliteral">'/'</font>;
+00442 *to++ = <font class="charliteral">'d'</font>;
+00443 *to++ = <font class="charliteral">'i'</font>;
+00444 *to++ = <font class="charliteral">'v'</font>;
+00445 *to++ = <font class="charliteral">'&gt;'</font>;
+00446 isRightJustified = <font class="keyword">false</font>;
+00447 }
+00448 <font class="keywordflow">continue</font>;
+00449 }
+00450 <font class="keywordflow">break</font>;
+00451 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// title formatting</font>
+00452 <font class="keywordflow">switch</font>(token[1])
+00453 {
+00454 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Book title begin</font>
+00455 *to++ = <font class="charliteral">'&lt;'</font>;
+00456 *to++ = <font class="charliteral">'b'</font>;
+00457 *to++ = <font class="charliteral">'i'</font>;
+00458 *to++ = <font class="charliteral">'g'</font>;
+00459 *to++ = <font class="charliteral">'&gt;'</font>;
+00460 <font class="keywordflow">continue</font>;
+00461 <font class="keywordflow">case</font> <font class="charliteral">'t'</font>:
+00462 *to++ = <font class="charliteral">'&lt;'</font>;
+00463 *to++ = <font class="charliteral">'/'</font>;
+00464 *to++ = <font class="charliteral">'b'</font>;
+00465 *to++ = <font class="charliteral">'i'</font>;
+00466 *to++ = <font class="charliteral">'g'</font>;
+00467 *to++ = <font class="charliteral">'&gt;'</font>;
+00468 <font class="keywordflow">continue</font>;<font class="comment">/*</font>
+00469 <font class="comment"> case 'S':</font>
+00470 <font class="comment"> *to++ = '&lt;';</font>
+00471 <font class="comment"> *to++ = 'b';</font>
+00472 <font class="comment"> *to++ = 'r';</font>
+00473 <font class="comment"> *to++ = ' ';</font>
+00474 <font class="comment"> *to++ = '/';</font>
+00475 <font class="comment"> *to++ = '&gt;';</font>
+00476 <font class="comment"> *to++ = '&lt;';</font>
+00477 <font class="comment"> *to++ = 'b';</font>
+00478 <font class="comment"> *to++ = 'i';</font>
+00479 <font class="comment"> *to++ = 'g';</font>
+00480 <font class="comment"> *to++ = '&gt;';</font>
+00481 <font class="comment"> continue;</font>
+00482 <font class="comment"> case 's':</font>
+00483 <font class="comment"> *to++ = '&lt;';</font>
+00484 <font class="comment"> *to++ = '/';</font>
+00485 <font class="comment"> *to++ = 'b';</font>
+00486 <font class="comment"> *to++ = 'i';</font>
+00487 <font class="comment"> *to++ = 'g';</font>
+00488 <font class="comment"> *to++ = '&gt;';</font>
+00489 <font class="comment"> *to++ = '&lt;';</font>
+00490 <font class="comment"> *to++ = 'b';</font>
+00491 <font class="comment"> *to++ = 'r';</font>
+00492 <font class="comment"> *to++ = ' ';</font>
+00493 <font class="comment"> *to++ = '/';</font>
+00494 <font class="comment"> *to++ = '&gt;';</font>
+00495 <font class="comment"> continue;*/</font>
+00496 }
+00497 <font class="keywordflow">break</font>;
+00498
+00499 <font class="keywordflow">case</font> <font class="charliteral">'P'</font>: <font class="comment">// special formatting</font>
+00500 <font class="keywordflow">switch</font>(token[1])
+00501 {
+00502 <font class="keywordflow">case</font> <font class="charliteral">'P'</font>: <font class="comment">// Poetry begin</font>
+00503 *to++ = <font class="charliteral">'&lt;'</font>;
+00504 *to++ = <font class="charliteral">'c'</font>;
+00505 *to++ = <font class="charliteral">'i'</font>;
+00506 *to++ = <font class="charliteral">'t'</font>;
+00507 *to++ = <font class="charliteral">'e'</font>;
+00508 *to++ = <font class="charliteral">'&gt;'</font>;
+00509 <font class="keywordflow">continue</font>;
+00510 <font class="keywordflow">case</font> <font class="charliteral">'p'</font>:
+00511 *to++ = <font class="charliteral">'&lt;'</font>;
+00512 *to++ = <font class="charliteral">'/'</font>;
+00513 *to++ = <font class="charliteral">'c'</font>;
+00514 *to++ = <font class="charliteral">'i'</font>;
+00515 *to++ = <font class="charliteral">'t'</font>;
+00516 *to++ = <font class="charliteral">'e'</font>;
+00517 *to++ = <font class="charliteral">'&gt;'</font>;
+00518 <font class="keywordflow">continue</font>;
+00519 }
+00520 <font class="keywordflow">break</font>;
+00521 }
+00522 <font class="keywordflow">continue</font>;
+00523 }
+00524 <font class="keywordflow">if</font> (intoken) {
+00525 <font class="keywordflow">if</font> (tokpos &lt; 2045) {
+00526 token[tokpos++] = *from;
+00527 token[tokpos+2] = 0;
+00528 }
+00529 }
+00530 <font class="keywordflow">else</font>
+00531 *to++ = *from;
+00532 }
+00533 *to++ = 0;
+00534 *to = 0;
+00535 <font class="keywordflow">return</font> 0;
+00536 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfhtml_8h-source.html b/doc/api-documentation/html/gbfhtml_8h-source.html
new file mode 100644
index 0000000..1f12ccd
--- /dev/null
+++ b/doc/api-documentation/html/gbfhtml_8h-source.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfhtml.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfhtml.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> gbfhtml.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Tue Jun 15 15:34:26 CEST 1999</font>
+00005 <font class="comment"></font>
+00006 <font class="comment"> copyright : (C) 1999 by Torsten Uhlmann</font>
+00007 <font class="comment"> email : TUhlmann@gmx.de</font>
+00008 <font class="comment"> ***************************************************************************/</font>
+00009
+00010 <font class="comment">/***************************************************************************</font>
+00011 <font class="comment"> * *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00013 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00014 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00015 <font class="comment"> * (at your option) any later version. *</font>
+00016 <font class="comment"> * *</font>
+00017 <font class="comment"> ***************************************************************************/</font>
+00018
+00019 <font class="comment">/* $Header: /usr/local/cvsroot/sword/doc/api-documentation/html/gbfhtml_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $ */</font>
+00020 <font class="comment">/* $Revision: 1.7 $ */</font>
+00021
+00022 <font class="preprocessor">#ifndef GBFHTML_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define GBFHTML_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+<a name="l00031"></a><a class="code" href="class_g_b_f_h_t_m_l.html">00031</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_h_t_m_l.html">GBFHTML</a>:<font class="keyword">public</font> SWFilter
+00032 {
+00033 <font class="keyword">public</font>:
+00034 <a class="code" href="class_g_b_f_h_t_m_l.html">GBFHTML</a> ();
+00035 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00036 };
+00037
+00038 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfhtmlhref_8cpp-source.html b/doc/api-documentation/html/gbfhtmlhref_8cpp-source.html
new file mode 100644
index 0000000..07a0d60
--- /dev/null
+++ b/doc/api-documentation/html/gbfhtmlhref_8cpp-source.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfhtmlhref.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfhtmlhref.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> gbfhtmlhref.cpp - GBF to HTML filter with hrefs </font>
+00003 <font class="comment"> for strongs and morph tags</font>
+00004 <font class="comment"> -------------------</font>
+00005 <font class="comment"> begin : 2001-09-03</font>
+00006 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. *</font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;gbfhtmlhref.h&gt;</font>
+00021
+00022 GBFHTMLHREF::GBFHTMLHREF() {
+00023 setTokenStart(<font class="stringliteral">"&lt;"</font>);
+00024 setTokenEnd(<font class="stringliteral">"&gt;"</font>);
+00025
+00026 setTokenCaseSensitive(<font class="keyword">true</font>);
+00027
+00028 addTokenSubstitute(<font class="stringliteral">"Rf"</font>, <font class="stringliteral">")&lt;/small&gt;&lt;/font&gt;"</font>);
+00029 addTokenSubstitute(<font class="stringliteral">"Rx"</font>, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00030 addTokenSubstitute(<font class="stringliteral">"FI"</font>, <font class="stringliteral">"&lt;i&gt;"</font>); <font class="comment">// italics begin</font>
+00031 addTokenSubstitute(<font class="stringliteral">"Fi"</font>, <font class="stringliteral">"&lt;/i&gt;"</font>);
+00032 addTokenSubstitute(<font class="stringliteral">"FB"</font>, <font class="stringliteral">"&lt;n&gt;"</font>); <font class="comment">// bold begin</font>
+00033 addTokenSubstitute(<font class="stringliteral">"Fb"</font>, <font class="stringliteral">"&lt;/n&gt;"</font>);
+00034 addTokenSubstitute(<font class="stringliteral">"FR"</font>, <font class="stringliteral">"&lt;font color=\"#FF0000\"&gt;"</font>); <font class="comment">// words of Jesus begin</font>
+00035 addTokenSubstitute(<font class="stringliteral">"Fr"</font>, <font class="stringliteral">"&lt;/font&gt;"</font>);
+00036 addTokenSubstitute(<font class="stringliteral">"FU"</font>, <font class="stringliteral">"&lt;u&gt;"</font>); <font class="comment">// underline begin</font>
+00037 addTokenSubstitute(<font class="stringliteral">"Fu"</font>, <font class="stringliteral">"&lt;/u&gt;"</font>);
+00038 addTokenSubstitute(<font class="stringliteral">"FO"</font>, <font class="stringliteral">"&lt;cite&gt;"</font>); <font class="comment">// Old Testament quote begin</font>
+00039 addTokenSubstitute(<font class="stringliteral">"Fo"</font>, <font class="stringliteral">"&lt;/cite&gt;"</font>);
+00040 addTokenSubstitute(<font class="stringliteral">"FS"</font>, <font class="stringliteral">"&lt;sup&gt;"</font>); <font class="comment">// Superscript begin// Subscript begin</font>
+00041 addTokenSubstitute(<font class="stringliteral">"Fs"</font>, <font class="stringliteral">"&lt;/sup&gt;"</font>);
+00042 addTokenSubstitute(<font class="stringliteral">"FV"</font>, <font class="stringliteral">"&lt;sub&gt;"</font>); <font class="comment">// Subscript begin</font>
+00043 addTokenSubstitute(<font class="stringliteral">"Fv"</font>, <font class="stringliteral">"&lt;/sub&gt;"</font>);
+00044 addTokenSubstitute(<font class="stringliteral">"TT"</font>, <font class="stringliteral">"&lt;big&gt;"</font>); <font class="comment">// Book title begin</font>
+00045 addTokenSubstitute(<font class="stringliteral">"Tt"</font>, <font class="stringliteral">"&lt;/big&gt;"</font>);
+00046 addTokenSubstitute(<font class="stringliteral">"PP"</font>, <font class="stringliteral">"&lt;cite&gt;"</font>); <font class="comment">// poetry begin</font>
+00047 addTokenSubstitute(<font class="stringliteral">"Pp"</font>, <font class="stringliteral">"&lt;/cite&gt;"</font>);
+00048 addTokenSubstitute(<font class="stringliteral">"Fn"</font>, <font class="stringliteral">"&lt;/font&gt;"</font>); <font class="comment">// font end</font>
+00049 addTokenSubstitute(<font class="stringliteral">"CL"</font>, <font class="stringliteral">"&lt;br /&gt;"</font>); <font class="comment">// new line</font>
+00050 addTokenSubstitute(<font class="stringliteral">"CM"</font>, <font class="stringliteral">"&lt;!P&gt;&lt;br /&gt;"</font>); <font class="comment">// paragraph &lt;!P&gt; is a non showing comment that can be changed in the front end to &lt;P&gt; if desired</font>
+00051 addTokenSubstitute(<font class="stringliteral">"CG"</font>, <font class="stringliteral">""</font>); <font class="comment">// ???</font>
+00052 addTokenSubstitute(<font class="stringliteral">"CT"</font>, <font class="stringliteral">""</font>); <font class="comment">// ???</font>
+00053 addTokenSubstitute(<font class="stringliteral">"JR"</font>, <font class="stringliteral">"&lt;div align=\"right\"&gt;"</font>); <font class="comment">// right align begin</font>
+00054 addTokenSubstitute(<font class="stringliteral">"JC"</font>, <font class="stringliteral">"&lt;div align=\"center\"&gt;"</font>); <font class="comment">// center align begin</font>
+00055 addTokenSubstitute(<font class="stringliteral">"JL"</font>, <font class="stringliteral">"&lt;/div&gt;"</font>); <font class="comment">// align end</font>
+00056
+00057 }
+00058
+00059
+<a name="l00060"></a><a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">00060</a> <font class="keywordtype">bool</font> <a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">GBFHTMLHREF::handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData) {
+00061 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok;
+00062
+00063 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00064 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WG"</font>, 2) || !strncmp(token, <font class="stringliteral">"WH"</font>, 2)) { <font class="comment">// strong's numbers</font>
+00065 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;em&gt;&amp;lt;&lt;a href=\"#"</font>);
+00066 <font class="keywordflow">for</font> (tok = token+1; *tok; tok++)
+00067 <font class="comment">//if(token[i] != '\"')</font>
+00068 *(*buf)++ = *tok;
+00069 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00070 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00071 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00072 <font class="comment">//if(token[i] != '\"')</font>
+00073 *(*buf)++ = *tok;
+00074 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;&amp;gt;&lt;/em&gt;&lt;/small&gt;"</font>);
+00075 }
+00076
+00077 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WTG"</font>, 3) || !strncmp(token, <font class="stringliteral">"WTH"</font>, 3)) { <font class="comment">// strong's numbers tense</font>
+00078 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;em&gt;(&lt;A HREF=\"#"</font>);
+00079 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00080 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00081 *(*buf)++ = *tok;
+00082 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00083 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00084 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++)
+00085 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00086 *(*buf)++ = *tok;
+00087 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;)&lt;/em&gt;&lt;/small&gt;"</font>);
+00088 }
+00089
+00090 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WT"</font>, 2) &amp;&amp; strncmp(token, <font class="stringliteral">"WTH"</font>, 3) &amp;&amp; strncmp(token, <font class="stringliteral">"WTG"</font>, 3)) { <font class="comment">// morph tags</font>
+00091 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;em&gt;(&lt;a href=\"M"</font>);
+00092 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00093 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00094 *(*buf)++ = *tok;
+00095 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00096 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00097 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00098 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00099 *(*buf)++ = *tok;
+00100 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;)&lt;/em&gt;&lt;/small&gt;"</font>);
+00101 }
+00102
+00103 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RX"</font>, 2)) {
+00104 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00105 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++) {
+00106 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'&lt;'</font> &amp;&amp; *tok+1 != <font class="charliteral">'R'</font> &amp;&amp; *tok+2 != <font class="charliteral">'x'</font>) {
+00107 *(*buf)++ = *tok;
+00108 }
+00109 <font class="keywordflow">else</font> {
+00110 <font class="keywordflow">break</font>;
+00111 }
+00112 }
+00113 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00114 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00115 }
+00116
+00117 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RB"</font>, 2)) {
+00118 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;i&gt;"</font>);
+00119 userData[<font class="stringliteral">"hasFootnotePreTag"</font>] = <font class="stringliteral">"true"</font>;
+00120 }
+00121
+00122 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RF"</font>, 2)) {
+00123 <font class="keywordflow">if</font>(userData[<font class="stringliteral">"hasFootnotePreTag"</font>] == <font class="stringliteral">"true"</font>) {
+00124 userData[<font class="stringliteral">"hasFootnotePreTag"</font>] = <font class="stringliteral">"false"</font>;
+00125 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/i&gt; "</font>);
+00126 }
+00127 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;font color=\"#800000\"&gt;&lt;small&gt; ("</font>);
+00128 }
+00129
+00130 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"FN"</font>, 2)) {
+00131 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;font face=\""</font>);
+00132 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00133 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00134 *(*buf)++ = *tok;
+00135 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00136 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00137 }
+00138
+00139 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"CA"</font>, 2)) { <font class="comment">// ASCII value</font>
+00140 *(*buf)++ = (char)atoi(&amp;token[2]);
+00141 }
+00142
+00143 <font class="keywordflow">else</font> {
+00144 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00145 }
+00146 }
+00147 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00148 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfhtmlhref_8h-source.html b/doc/api-documentation/html/gbfhtmlhref_8h-source.html
new file mode 100644
index 0000000..237131f
--- /dev/null
+++ b/doc/api-documentation/html/gbfhtmlhref_8h-source.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfhtmlhref.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfhtmlhref.h</h1><div class="fragment"><pre>00001 <font class="comment">/*-*************************************************************************</font>
+00002 <font class="comment"> gbfhtmlhref.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 2001-09-03</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#ifndef GBFHTMLHREF_H</font>
+00018 <font class="preprocessor"></font><font class="preprocessor">#define GBFHTMLHREF_H</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#include &lt;swbasicfilter.h&gt;</font>
+00021
+00022 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00023
+<a name="l00026"></a><a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html">00026</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_basic_filter.html">SWBasicFilter</a> {
+00027 <font class="keyword">protected</font>:
+00028 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_basic_filter.html#b13">handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData);
+00029 <font class="keyword">public</font>:
+00030 <a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a> ();
+00031 };
+00032
+00033 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfmorph_8cpp-source.html b/doc/api-documentation/html/gbfmorph_8cpp-source.html
new file mode 100644
index 0000000..8598147
--- /dev/null
+++ b/doc/api-documentation/html/gbfmorph_8cpp-source.html
@@ -0,0 +1,112 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfmorph.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfmorph.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * gbfmorph - SWFilter decendant to hide or show morph tags</font>
+00004 <font class="comment"> * in a GBF module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;gbfmorph.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFMorph::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFMorph::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFMorph::optName[] = <font class="stringliteral">"Morphological Tags"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFMorph::optTip[] = <font class="stringliteral">"Toggles Morphological Tags On and Off if they exist"</font>;
+00021
+00022
+00023 GBFMorph::GBFMorph() {
+00024 option = <font class="keyword">false</font>;
+00025 options.push_back(on);
+00026 options.push_back(off);
+00027 }
+00028
+00029
+00030 GBFMorph::~GBFMorph() {
+00031 }
+00032
+00033 <font class="keywordtype">void</font> GBFMorph::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00034 {
+00035 option = (!stricmp(ival, on));
+00036 }
+00037
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> *GBFMorph::getOptionValue()
+00039 {
+00040 <font class="keywordflow">return</font> (option) ? on:off;
+00041 }
+00042
+00043 <font class="keywordtype">char</font> GBFMorph::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00044 {
+00045 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want morph tags</font>
+00046 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00051
+00052 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00053 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00054 memmove(&amp;text[maxlen - len], text, len);
+00055 from = &amp;text[maxlen - len];
+00056 }
+00057 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00058
+00059 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00061 intoken = <font class="keyword">true</font>;
+00062 tokpos = 0;
+00063 token[0] = 0;
+00064 token[1] = 0;
+00065 token[2] = 0;
+00066 <font class="keywordflow">continue</font>;
+00067 }
+00068 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00069 intoken = <font class="keyword">false</font>;
+00070 <font class="keywordflow">if</font> (*token == <font class="charliteral">'W'</font> &amp;&amp; token[1] == <font class="charliteral">'T'</font>) { <font class="comment">// Morph</font>
+00071 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">' '</font>) || (from[1] == <font class="charliteral">','</font>) || (from[1] == <font class="charliteral">';'</font>) || (from[1] == <font class="charliteral">'.'</font>) || (from[1] == <font class="charliteral">'?'</font>) || (from[1] == <font class="charliteral">'!'</font>) || (from[1] == <font class="charliteral">')'</font>) || (from[1] == <font class="charliteral">'\''</font>) || (from[1] == <font class="charliteral">'\"'</font>)) {
+00072 <font class="keywordflow">if</font> (lastspace)
+00073 to--;
+00074 }
+00075 <font class="keywordflow">continue</font>;
+00076 }
+00077 <font class="comment">// if not a morph tag token, keep token in text</font>
+00078 *to++ = <font class="charliteral">'&lt;'</font>;
+00079 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00080 *to++ = *tok;
+00081 *to++ = <font class="charliteral">'&gt;'</font>;
+00082 <font class="keywordflow">continue</font>;
+00083 }
+00084 <font class="keywordflow">if</font> (intoken) {
+00085 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00086 token[tokpos++] = *from;
+00087 token[tokpos+2] = 0;
+00088 }
+00089 <font class="keywordflow">else</font> {
+00090 *to++ = *from;
+00091 lastspace = (*from == <font class="charliteral">' '</font>);
+00092 }
+00093 }
+00094 *to++ = 0;
+00095 *to = 0;
+00096 }
+00097 <font class="keywordflow">return</font> 0;
+00098 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfmorph_8h-source.html b/doc/api-documentation/html/gbfmorph_8h-source.html
new file mode 100644
index 0000000..b92fd2c
--- /dev/null
+++ b/doc/api-documentation/html/gbfmorph_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfmorph.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfmorph.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef GBFMORPH_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define GBFMORPH_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_g_b_f_morph.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_morph.html">GBFMorph</a>:<font class="keyword">public</font> SWFilter
+00030 {
+00031 <font class="keywordtype">bool</font> option;
+00032 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00036 OptionsList options;
+00037 <font class="keyword">public</font>:
+00038 <a class="code" href="class_g_b_f_morph.html">GBFMorph</a> ();
+00039 <font class="keyword">virtual</font> ~ GBFMorph ();
+00040 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00041 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00042 {
+00043 <font class="keywordflow">return</font> optName;
+00044 }
+00045 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00046 {
+00047 <font class="keywordflow">return</font> optTip;
+00048 }
+00049 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00050 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00051 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00052 {
+00053 <font class="keywordflow">return</font> options;
+00054 }
+00055 };
+00056
+00057 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfosis_8cpp-source.html b/doc/api-documentation/html/gbfosis_8cpp-source.html
new file mode 100644
index 0000000..5ef95db
--- /dev/null
+++ b/doc/api-documentation/html/gbfosis_8cpp-source.html
@@ -0,0 +1,325 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfosis.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfosis.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * gbfstrongs - SWFilter decendant to hide or show strongs number</font>
+00004 <font class="comment"> * in a GBF module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;gbfosis.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00013 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00014 <font class="preprocessor">#ifndef __GNUC__</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00016 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00017 <font class="preprocessor">#endif</font>
+00018 <font class="preprocessor"></font>
+00019
+00020 GBFOSIS::GBFOSIS() {
+00021 }
+00022
+00023
+00024 GBFOSIS::~GBFOSIS() {
+00025 }
+00026
+00027
+00028 <font class="keywordtype">char</font> GBFOSIS::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module) {
+00029
+00030 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00031 <font class="keywordtype">int</font> tokpos = 0;
+00032 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00033 <font class="keywordtype">int</font> len;
+00034 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00035 <font class="keywordtype">int</font> word = 1;
+00036 <font class="keywordtype">char</font> val[128];
+00037 <font class="keywordtype">char</font> buf[128];
+00038 <font class="keywordtype">char</font> wordstr[5];
+00039 <font class="keywordtype">char</font> *valto;
+00040 <font class="keywordtype">char</font> *ch;
+00041 <font class="keywordtype">char</font> *textStart, *textEnd;
+00042 <font class="keywordtype">char</font> *wordStart, *wordEnd;
+00043 <font class="keywordtype">bool</font> newText = <font class="keyword">false</font>;
+00044 <font class="keywordtype">bool</font> newWord = <font class="keyword">false</font>;
+00045 string tmp;
+00046 <font class="keywordtype">bool</font> suspendTextPassThru = <font class="keyword">false</font>;
+00047 <font class="keywordtype">bool</font> keepToken = <font class="keyword">false</font>;
+00048
+00049 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00050 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00051 memmove(&amp;text[maxlen - len], text, len);
+00052 from = &amp;text[maxlen - len];
+00053 }
+00054 <font class="keywordflow">else</font> from = text;
+00055
+00056 textStart = from;
+00057 wordStart = text;
+00058
+00059 <font class="comment">// -------------------------------</font>
+00060
+00061 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00062 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00063 intoken = <font class="keyword">true</font>;
+00064 tokpos = 0;
+00065 token[0] = 0;
+00066 token[1] = 0;
+00067 token[2] = 0;
+00068 textEnd = from-1;
+00069 wordEnd = to;
+00070 <font class="keywordflow">continue</font>;
+00071 }
+00072 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00073 intoken = <font class="keyword">false</font>;
+00074 keepToken = <font class="keyword">false</font>;
+00075 suspendTextPassThru = <font class="keyword">false</font>;
+00076 newWord = <font class="keyword">true</font>;
+00077
+00078
+00079 <font class="keywordflow">while</font> (wordStart &lt; (text+maxlen)) {
+00080 <font class="comment">// if (strchr(" ,;.?!()'\"", *wordStart))</font>
+00081 <font class="keywordflow">if</font> (strchr(<font class="stringliteral">";, .:?!()'\""</font>, *wordStart))
+00082 wordStart++;
+00083 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00084 }
+00085 <font class="keywordflow">while</font> (wordEnd &gt; wordStart) {
+00086 <font class="keywordflow">if</font> (strchr(<font class="stringliteral">" ,;.:?!()'\""</font>, *wordEnd))
+00087 wordEnd--;
+00088 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00089 }
+00090
+00091 <font class="comment">// Scripture Reference</font>
+00092 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00093 <font class="comment">// pushString(buf, "&lt;reference work=\"Bible.KJV\" reference=\"");</font>
+00094 suspendTextPassThru = <font class="keyword">true</font>;
+00095 newText = <font class="keyword">true</font>;
+00096 }
+00097 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/scripRef"</font>, 9)) {
+00098 tmp = <font class="stringliteral">""</font>;
+00099 tmp.append(textStart, (<font class="keywordtype">int</font>)(textEnd - textStart)+1);
+00100 pushString(&amp;to, convertToOSIS(tmp.c_str(), key));
+00101 suspendTextPassThru = <font class="keyword">false</font>;
+00102 }
+00103
+00104 <font class="comment">// Footnote</font>
+00105 <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"RF"</font>)) {
+00106 <font class="comment">// pushString(buf, "&lt;reference work=\"Bible.KJV\" reference=\"");</font>
+00107 suspendTextPassThru = <font class="keyword">true</font>;
+00108 newText = <font class="keyword">true</font>;
+00109 }
+00110 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"Rf"</font>)) {
+00111 tmp = <font class="stringliteral">"&lt;note type=\"x-StudyNote\"&gt;&lt;notePart type=\"x-MainText\"&gt;"</font>;
+00112 tmp.append(textStart, (<font class="keywordtype">int</font>)(textEnd - textStart)+1);
+00113 tmp += <font class="stringliteral">"&lt;/notePart&gt;&lt;/note&gt;"</font>;
+00114 pushString(&amp;to, tmp.c_str());
+00115 suspendTextPassThru = <font class="keyword">false</font>;
+00116 }
+00117
+00118 <font class="comment">// Figure</font>
+00119 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"img "</font>, 4)) {
+00120 <font class="keyword">const</font> <font class="keywordtype">char</font> *src = strstr(token, <font class="stringliteral">"src"</font>);
+00121 <font class="keywordflow">if</font> (!src) <font class="comment">// assert we have a src attribute</font>
+00122 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00123
+00124 pushString(&amp;to, <font class="stringliteral">"&lt;figure src=\""</font>);
+00125 <font class="keyword">const</font> <font class="keywordtype">char</font> *c;
+00126 <font class="keywordflow">for</font> (c = src;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++);
+00127
+00128 <font class="comment">/* uncomment for SWORD absolute path logic</font>
+00129 <font class="comment"> if (*(c+1) == '/') {</font>
+00130 <font class="comment"> pushString(buf, "file:");</font>
+00131 <font class="comment"> pushString(buf, module-&gt;getConfigEntry("AbsoluteDataPath"));</font>
+00132 <font class="comment"> if (*((*buf)-1) == '/')</font>
+00133 <font class="comment"> c++; // skip '/'</font>
+00134 <font class="comment"> }</font>
+00135 <font class="comment"> end of uncomment for asolute path logic */</font>
+00136
+00137 <font class="keywordflow">for</font> (c++;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++)
+00138 *to++ = *c;
+00139
+00140 pushString(&amp;to, <font class="stringliteral">"\" /&gt;"</font>);
+00141 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00142 }
+00143
+00144 <font class="comment">// Strongs numbers</font>
+00145 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*token == <font class="charliteral">'W'</font> &amp;&amp; (token[1] == <font class="charliteral">'G'</font> || token[1] == <font class="charliteral">'H'</font>)) { <font class="comment">// Strongs</font>
+00146 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a64">isProcessEntryAttributes</a>()) {
+00147 valto = val;
+00148 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 1; ((token[i]) &amp;&amp; (i &lt; 150)); i++)
+00149 *valto++ = token[i];
+00150 *valto = 0;
+00151 <font class="comment">// normal strongs number</font>
+00152 strstrip(val);
+00153 <font class="keywordflow">if</font> (!strncmp(wordStart, <font class="stringliteral">"&lt;w "</font>, 3)) {
+00154 sprintf(buf, <font class="stringliteral">"lemma=\"x-Strong:%s\" "</font>, val);
+00155 memmove(wordStart+3+strlen(buf), wordStart+3, (to-wordStart)+1);
+00156 memcpy(wordStart+3, buf, strlen(buf));
+00157 to+=strlen(buf);
+00158 }
+00159 <font class="keywordflow">else</font> {
+00160 sprintf(buf, <font class="stringliteral">"&lt;w lemma=\"x-Strong:%s\"&gt;"</font>, val);
+00161 memmove(wordStart+strlen(buf), wordStart, (to-wordStart)+1);
+00162 memcpy(wordStart, buf, strlen(buf));
+00163 to+=strlen(buf);
+00164 pushString(&amp;to, <font class="stringliteral">"&lt;/w&gt;"</font>);
+00165 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Strongs"</font>] = val;
+00166 }
+00167 }
+00168 }
+00169
+00170 <font class="comment">// Morphology</font>
+00171 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*token == <font class="charliteral">'W'</font> &amp;&amp; token[1] == <font class="charliteral">'T'</font> &amp;&amp; (token[2] == <font class="charliteral">'G'</font> || token[2] == <font class="charliteral">'H'</font>)) { <font class="comment">// Strongs</font>
+00172 valto = val;
+00173 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 1; ((token[i]) &amp;&amp; (i &lt; 150)); i++)
+00174 *valto++ = token[i];
+00175 *valto = 0;
+00176 strstrip(val);
+00177 <font class="keywordflow">if</font> (!strncmp(wordStart, <font class="stringliteral">"&lt;w "</font>, 3)) {
+00178 sprintf(buf, <font class="stringliteral">"morph=\"x-%s:%s\" "</font>, <font class="stringliteral">"StrongsMorph"</font>, val);
+00179 memmove(wordStart+3+strlen(buf), wordStart+3, (to-wordStart)+1);
+00180 memcpy(wordStart+3, buf, strlen(buf));
+00181 to+=strlen(buf);
+00182 }
+00183 <font class="keywordflow">else</font> {
+00184 sprintf(buf, <font class="stringliteral">"&lt;w morph=\"x-%s:%s\"&gt;"</font>, <font class="stringliteral">"StrongsMorph"</font>, val);
+00185 memmove(wordStart+strlen(buf), wordStart, (to-wordStart)+1);
+00186 memcpy(wordStart, buf, strlen(buf));
+00187 to+=strlen(buf);
+00188 pushString(&amp;to, <font class="stringliteral">"&lt;/w&gt;"</font>);
+00189 }
+00190 }
+00191
+00192 <font class="keywordflow">if</font> (!keepToken) { <font class="comment">// if we don't want strongs</font>
+00193 <font class="keywordflow">if</font> (from[1] &amp;&amp; strchr(<font class="stringliteral">" ,;.:?!()'\""</font>, from[1])) {
+00194 <font class="keywordflow">if</font> (lastspace)
+00195 to--;
+00196 }
+00197 <font class="keywordflow">if</font> (newText) {textStart = from+1; newText = <font class="keyword">false</font>; }
+00198 <font class="comment">// if (newWord) {wordStart = to; newWord = false; }</font>
+00199 <font class="keywordflow">continue</font>;
+00200 }
+00201 <font class="comment">// if not a strongs token, keep token in text</font>
+00202 *to++ = <font class="charliteral">'&lt;'</font>;
+00203 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00204 *to++ = *tok;
+00205 *to++ = <font class="charliteral">'&gt;'</font>;
+00206 <font class="keywordflow">if</font> (newText) {textStart = to; newWord = <font class="keyword">false</font>; }
+00207 <font class="comment">// if (newWord) {wordStart = to; newWord = false; }</font>
+00208 <font class="keywordflow">continue</font>;
+00209 }
+00210 <font class="keywordflow">if</font> (intoken) {
+00211 <font class="keywordflow">if</font> ((tokpos &lt; 2045) &amp;&amp; ((*from != 10)&amp;&amp;(*from != 13))) {
+00212 token[tokpos++] = *from;
+00213 token[tokpos+2] = 0;
+00214 }
+00215 }
+00216 <font class="keywordflow">else</font> {
+00217 <font class="keywordflow">if</font> (newWord &amp;&amp; (*from != <font class="charliteral">' '</font>)) {wordStart = to; newWord = <font class="keyword">false</font>; memset(to, 0, 10); }
+00218 <font class="keywordflow">if</font> (!suspendTextPassThru) {
+00219 *to++ = *from;
+00220 lastspace = (*from == <font class="charliteral">' '</font>);
+00221 }
+00222 }
+00223 }
+00224
+00225 <a class="code" href="class_verse_key.html">VerseKey</a> *vkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00226 <font class="keywordflow">if</font> (vkey) {
+00227 <font class="keywordtype">char</font> ref[254];
+00228 <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>())
+00229 sprintf(ref, <font class="stringliteral">"&lt;verseStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00230 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>())
+00231 sprintf(ref, <font class="stringliteral">"&lt;chapterStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00232 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>())
+00233 sprintf(ref, <font class="stringliteral">"&lt;bookStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00234 <font class="keywordflow">else</font> *ref = 0;
+00235 <font class="keywordflow">if</font> (*ref) {
+00236 memmove(text+strlen(ref), text, maxlen-strlen(ref)-1);
+00237 memcpy(text, ref, strlen(ref));
+00238 to+=strlen(ref);
+00239 <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>()) {
+00240 <a class="code" href="class_verse_key.html">VerseKey</a> tmp;
+00241 tmp = *vkey;
+00242 tmp.<a class="code" href="class_verse_key.html#a31">AutoNormalize</a>(0);
+00243 tmp.<a class="code" href="class_verse_key.html#a32">Headings</a>(1);
+00244 sprintf(ref, <font class="stringliteral">"&lt;verseEnd ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00245 pushString(&amp;to, ref);
+00246 tmp = MAXVERSE;
+00247 <font class="keywordflow">if</font> (*vkey == tmp) {
+00248 tmp.<a class="code" href="class_verse_key.html#a25">Verse</a>(0);
+00249 sprintf(ref, <font class="stringliteral">"&lt;chapterEnd ref=\"%s\" /&gt;"</font>, tmp.<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00250 pushString(&amp;to, ref);
+00251 tmp = MAXCHAPTER;
+00252 tmp = MAXVERSE;
+00253 <font class="keywordflow">if</font> (*vkey == tmp) {
+00254 tmp.<a class="code" href="class_verse_key.html#a24">Chapter</a>(0);
+00255 tmp.<a class="code" href="class_verse_key.html#a25">Verse</a>(0);
+00256 sprintf(ref, <font class="stringliteral">"&lt;bookEnd ref=\"%s\" /&gt;"</font>, tmp.<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00257 pushString(&amp;to, ref);
+00258 }
+00259 }
+00260 }
+00261
+00262 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>())
+00263 sprintf(ref, <font class="stringliteral">"&lt;chapterStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00264 <font class="keywordflow">else</font> sprintf(ref, <font class="stringliteral">"&lt;bookStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00265 }
+00266 }
+00267 *to++ = 0;
+00268 *to = 0;
+00269 <font class="keywordflow">return</font> 0;
+00270 }
+00271
+00272
+00273 <font class="keywordtype">void</font> GBFOSIS::pushString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...) {
+00274 va_list argptr;
+00275
+00276 va_start(argptr, format);
+00277 *buf += vsprintf(*buf, format, argptr);
+00278 va_end(argptr);
+00279
+00280 <font class="comment">// *buf += strlen(*buf);</font>
+00281 }
+00282
+00283
+00284 <font class="keyword">const</font> <font class="keywordtype">char</font> *GBFOSIS::convertToOSIS(<font class="keyword">const</font> <font class="keywordtype">char</font> *inRef, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00285 <font class="keyword">static</font> string outRef;
+00286
+00287 outRef = <font class="stringliteral">""</font>;
+00288
+00289 <a class="code" href="class_verse_key.html">VerseKey</a> defLanguage;
+00290 <a class="code" href="class_list_key.html">ListKey</a> verses = defLanguage.<a class="code" href="class_verse_key.html#a37">ParseVerseList</a>(inRef, (*key), <font class="keyword">true</font>);
+00291 <font class="keyword">const</font> <font class="keywordtype">char</font> *startFrag = inRef;
+00292 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; verses.<a class="code" href="class_list_key.html#a5">Count</a>(); i++) {
+00293 <a class="code" href="class_verse_key.html">VerseKey</a> *element = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i));
+00294 <font class="keywordtype">char</font> buf[5120];
+00295 <font class="keywordtype">char</font> frag[800];
+00296 <font class="keywordflow">if</font> (element) {
+00297 memmove(frag, startFrag, ((<font class="keyword">const</font> <font class="keywordtype">char</font> *)element-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1);
+00298 frag[((<font class="keyword">const</font> <font class="keywordtype">char</font> *)element-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1] = 0;
+00299 startFrag = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)element-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> + 1;
+00300 sprintf(buf, <font class="stringliteral">"&lt;reference refStart=\"KJV:%s\" refEnd=\"%s\"&gt;%s&lt;/reference&gt;"</font>, element-&gt;<a class="code" href="class_verse_key.html#a5">LowerBound</a>().<a class="code" href="class_verse_key.html#a36">getOSISRef</a>(), element-&gt;<a class="code" href="class_verse_key.html#a6">UpperBound</a>().<a class="code" href="class_verse_key.html#a36">getOSISRef</a>(), frag);
+00301 }
+00302 <font class="keywordflow">else</font> {
+00303 memmove(frag, startFrag, ((<font class="keyword">const</font> <font class="keywordtype">char</font> *)verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1);
+00304 frag[((<font class="keyword">const</font> <font class="keywordtype">char</font> *)verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1] = 0;
+00305 startFrag = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> + 1;
+00306 sprintf(buf, <font class="stringliteral">"&lt;reference refStart=\"KJV:%s\"&gt;%s&lt;/reference&gt;"</font>, <a class="code" href="class_verse_key.html">VerseKey</a>(*verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)).getOSISRef(), frag);
+00307 }
+00308 outRef+=buf;
+00309 }
+00310 <font class="keywordflow">return</font> outRef.c_str();
+00311 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfosis_8h-source.html b/doc/api-documentation/html/gbfosis_8h-source.html
new file mode 100644
index 0000000..3705dd1
--- /dev/null
+++ b/doc/api-documentation/html/gbfosis_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfosis.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfosis.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> gbfosis.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 2001-09-03</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#ifndef GBFOSIS_H</font>
+00018 <font class="preprocessor"></font><font class="preprocessor">#define GBFOSIS_H</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00022
+<a name="l00025"></a><a class="code" href="class_g_b_f_o_s_i_s.html">00025</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a> : <font class="keyword">public</font> SWFilter {
+00026 <font class="keyword">protected</font>:
+00027 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *convertToOSIS(<font class="keyword">const</font> <font class="keywordtype">char</font> *, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key);
+00028 <font class="keywordtype">void</font> pushString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...);
+00029 <font class="keyword">public</font>:
+00030 <a class="code" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>();
+00031 <font class="keyword">virtual</font> ~<a class="code" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>();
+00032 <font class="keywordtype">char</font> ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00033 };
+00034
+00035 <font class="preprocessor">#endif </font><font class="comment">/* THMLOSIS_H */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfplain_8cpp-source.html b/doc/api-documentation/html/gbfplain_8cpp-source.html
new file mode 100644
index 0000000..d956f6e
--- /dev/null
+++ b/doc/api-documentation/html/gbfplain_8cpp-source.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfplain.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfplain.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * gbfplain - SWFilter decendant to strip out all GBF tags or convert to</font>
+00004 <font class="comment"> * ASCII rendered symbols.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;gbfplain.h&gt;</font>
+00011
+00012
+00013 GBFPlain::GBFPlain() {
+00014 }
+00015
+00016
+00017 <font class="keywordtype">char</font> GBFPlain::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00018 {
+00019 <font class="keywordtype">char</font> *to, *from, token[2048];
+00020 <font class="keywordtype">int</font> tokpos = 0;
+00021 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00022 <font class="keywordtype">int</font> len;
+00023
+00024 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00025 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00026 memmove(&amp;text[maxlen - len], text, len);
+00027 from = &amp;text[maxlen - len];
+00028 }
+00029 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00030
+00031 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00032 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00033 intoken = <font class="keyword">true</font>;
+00034 tokpos = 0;
+00035 token[0] = 0;
+00036 token[1] = 0;
+00037 token[2] = 0;
+00038 <font class="keywordflow">continue</font>;
+00039 }
+00040 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) {
+00041 intoken = <font class="keyword">false</font>;
+00042 <font class="comment">// process desired tokens</font>
+00043 <font class="keywordflow">switch</font> (*token) {
+00044 <font class="keywordflow">case</font> <font class="charliteral">'W'</font>: <font class="comment">// Strongs</font>
+00045 <font class="keywordflow">switch</font>(token[1]) {
+00046 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>: <font class="comment">// Greek</font>
+00047 <font class="keywordflow">case</font> <font class="charliteral">'H'</font>: <font class="comment">// Hebrew</font>
+00048 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Tense</font>
+00049 *to++ = <font class="charliteral">' '</font>;
+00050 *to++ = <font class="charliteral">'&lt;'</font>;
+00051 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token + 2; *tok; tok++)
+00052 *to++ = *tok;
+00053 *to++ = <font class="charliteral">'&gt;'</font>;
+00054 *to++ = <font class="charliteral">' '</font>;
+00055 <font class="keywordflow">continue</font>;
+00056 }
+00057 <font class="keywordflow">break</font>;
+00058 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>:
+00059 <font class="keywordflow">switch</font>(token[1]) {
+00060 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// footnote begin</font>
+00061 *to++ = <font class="charliteral">' '</font>;
+00062 *to++ = <font class="charliteral">'['</font>;
+00063 <font class="keywordflow">continue</font>;
+00064 <font class="keywordflow">case</font> <font class="charliteral">'f'</font>: <font class="comment">// footnote end</font>
+00065 *to++ = <font class="charliteral">']'</font>;
+00066 *to++ = <font class="charliteral">' '</font>;
+00067 <font class="keywordflow">continue</font>;
+00068 }
+00069 <font class="keywordflow">break</font>;
+00070 <font class="keywordflow">case</font> <font class="charliteral">'C'</font>:
+00071 <font class="keywordflow">switch</font>(token[1]) {
+00072 <font class="keywordflow">case</font> <font class="charliteral">'A'</font>: <font class="comment">// ASCII value</font>
+00073 *to++ = (char)atoi(&amp;token[2]);
+00074 <font class="keywordflow">continue</font>;
+00075 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>:
+00076 *to++ = <font class="charliteral">'&gt;'</font>;
+00077 <font class="keywordflow">continue</font>;
+00078 <font class="comment">/* Bug in WEB</font>
+00079 <font class="comment"> case 'L':</font>
+00080 <font class="comment"> *to++ = '&lt;';</font>
+00081 <font class="comment"> continue;</font>
+00082 <font class="comment">*/</font>
+00083 <font class="keywordflow">case</font> <font class="charliteral">'L'</font>: <font class="comment">// Bug in WEB. Use above entry when fixed</font>
+00084 <font class="keywordflow">case</font> <font class="charliteral">'N'</font>: <font class="comment">// new line</font>
+00085 *to++ = <font class="charliteral">'\n'</font>;
+00086 <font class="keywordflow">continue</font>;
+00087 <font class="keywordflow">case</font> <font class="charliteral">'M'</font>: <font class="comment">// new paragraph</font>
+00088 *to++ = <font class="charliteral">'\n'</font>;
+00089 *to++ = <font class="charliteral">'\n'</font>;
+00090 <font class="keywordflow">continue</font>;
+00091 }
+00092 <font class="keywordflow">break</font>;
+00093 }
+00094 <font class="keywordflow">continue</font>;
+00095 }
+00096 <font class="keywordflow">if</font> (intoken) {
+00097 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00098 token[tokpos++] = *from;
+00099 token[tokpos+2] = 0;
+00100 }
+00101 <font class="keywordflow">else</font> *to++ = *from;
+00102 }
+00103 *to++ = 0;
+00104 *to = 0;
+00105 <font class="keywordflow">return</font> 0;
+00106 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfplain_8h-source.html b/doc/api-documentation/html/gbfplain_8h-source.html
new file mode 100644
index 0000000..48a2482
--- /dev/null
+++ b/doc/api-documentation/html/gbfplain_8h-source.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfplain.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfplain.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: gbfplain_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef GBFPLAIN_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define GBFPLAIN_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_g_b_f_plain.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_plain.html">GBFPlain</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keyword">public</font>:
+00033 <a class="code" href="class_g_b_f_plain.html">GBFPlain</a> ();
+00034 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00035 };
+00036
+00037 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfrtf_8cpp-source.html b/doc/api-documentation/html/gbfrtf_8cpp-source.html
new file mode 100644
index 0000000..504743f
--- /dev/null
+++ b/doc/api-documentation/html/gbfrtf_8cpp-source.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfrtf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfrtf.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * gbfrtf - SWFilter decendant to convert all GBF tags to RTF tags</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;gbfrtf.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00011
+00012 GBFRTF::GBFRTF() {
+00013 }
+00014
+00015
+00016 <font class="keywordtype">char</font> GBFRTF::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00017 {
+00018 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from;
+00019 <font class="keywordtype">char</font> token[2048];
+00020 <font class="keywordtype">int</font> tokpos = 0;
+00021 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00022 <font class="keywordtype">int</font> len;
+00023 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok;
+00024
+00025 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00026 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00027 memmove(&amp;text[maxlen - len], text, len);
+00028 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)&amp;text[maxlen - len];
+00029 }
+00030 <font class="keywordflow">else</font> from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)text; <font class="comment">// -------------------------------</font>
+00031 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)text; *from; from++) {
+00032 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00033 intoken = <font class="keyword">true</font>;
+00034 tokpos = 0;
+00035 token[0] = 0;
+00036 token[1] = 0;
+00037 token[2] = 0;
+00038 <font class="keywordflow">continue</font>;
+00039 }
+00040 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) {
+00041 intoken = <font class="keyword">false</font>;
+00042 <font class="comment">// process desired tokens</font>
+00043 <font class="keywordflow">switch</font> (*token) {
+00044 <font class="keywordflow">case</font> <font class="charliteral">'W'</font>: <font class="comment">// Strongs</font>
+00045 <font class="keywordflow">switch</font>(token[1]) {
+00046 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>: <font class="comment">// Greek</font>
+00047 <font class="keywordflow">case</font> <font class="charliteral">'H'</font>: <font class="comment">// Hebrew</font>
+00048 *to++ = <font class="charliteral">'{'</font>;
+00049 *to++ = <font class="charliteral">'\\'</font>;
+00050 *to++ = <font class="charliteral">'f'</font>;
+00051 *to++ = <font class="charliteral">'s'</font>;
+00052 *to++ = <font class="charliteral">'1'</font>;
+00053 *to++ = <font class="charliteral">'7'</font>;
+00054 *to++ = <font class="charliteral">' '</font>;
+00055 *to++ = <font class="charliteral">'&lt;'</font>;
+00056 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00057 *to++ = *tok;
+00058 *to++ = <font class="charliteral">'&gt;'</font>;
+00059 *to++ = <font class="charliteral">'}'</font>;
+00060 <font class="keywordflow">continue</font>;
+00061
+00062 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Tense</font>
+00063 *to++ = <font class="charliteral">'{'</font>;
+00064 *to++ = <font class="charliteral">'\\'</font>;
+00065 *to++ = <font class="charliteral">'f'</font>;
+00066 *to++ = <font class="charliteral">'s'</font>;
+00067 *to++ = <font class="charliteral">'1'</font>;
+00068 *to++ = <font class="charliteral">'7'</font>;
+00069 *to++ = <font class="charliteral">' '</font>;
+00070 *to++ = <font class="charliteral">'('</font>;
+00071 <font class="keywordtype">bool</font> separate = <font class="keyword">false</font>;
+00072 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++) {
+00073 <font class="keywordflow">if</font> (separate) {
+00074 *to++ = <font class="charliteral">';'</font>;
+00075 *to++ = <font class="charliteral">' '</font>;
+00076 separate = <font class="keyword">false</font>;
+00077 }
+00078 <font class="keywordflow">switch</font> (*tok) {
+00079 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>:
+00080 <font class="keywordflow">case</font> <font class="charliteral">'H'</font>:
+00081 <font class="keywordflow">for</font> (tok++; *tok; tok++) {
+00082 <font class="keywordflow">if</font> (isdigit(*tok)) {
+00083 *to++ = *tok;
+00084 separate = <font class="keyword">true</font>;
+00085 }
+00086 <font class="keywordflow">else</font> {
+00087 tok--;
+00088 <font class="keywordflow">break</font>;
+00089 }
+00090 }
+00091 <font class="keywordflow">break</font>;
+00092 <font class="keywordflow">default</font>:
+00093 <font class="keywordflow">for</font> (; *tok; tok++) {
+00094 *to++ = *tok;
+00095 }
+00096 }
+00097 }
+00098 *to++ = <font class="charliteral">')'</font>;
+00099 *to++ = <font class="charliteral">'}'</font>;
+00100 <font class="keywordflow">continue</font>;
+00101 }
+00102 <font class="keywordflow">break</font>;
+00103 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>:
+00104 <font class="keywordflow">switch</font>(token[1]) {
+00105 <font class="keywordflow">case</font> <font class="charliteral">'X'</font>:
+00106 *to++ = <font class="charliteral">'&lt;'</font>;
+00107 *to++ = <font class="charliteral">'a'</font>;
+00108 *to++ = <font class="charliteral">' '</font>;
+00109 *to++ = <font class="charliteral">'h'</font>;
+00110 *to++ = <font class="charliteral">'r'</font>;
+00111 *to++ = <font class="charliteral">'e'</font>;
+00112 *to++ = <font class="charliteral">'f'</font>;
+00113 *to++ = <font class="charliteral">'='</font>;
+00114 *to++ = <font class="charliteral">'"'</font>;
+00115 *to++ = <font class="charliteral">'"'</font>;
+00116 *to++ = <font class="charliteral">'&gt;'</font>;
+00117 <font class="keywordflow">continue</font>;
+00118 <font class="keywordflow">case</font> <font class="charliteral">'x'</font>:
+00119 *to++ = <font class="charliteral">'&lt;'</font>;
+00120 *to++ = <font class="charliteral">'/'</font>;
+00121 *to++ = <font class="charliteral">'a'</font>;
+00122 *to++ = <font class="charliteral">'&gt;'</font>;
+00123 <font class="keywordflow">continue</font>;
+00124 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// footnote begin</font>
+00125 *to++ = <font class="charliteral">'{'</font>;
+00126 *to++ = <font class="charliteral">'\\'</font>;
+00127 *to++ = <font class="charliteral">'i'</font>;
+00128 *to++ = <font class="charliteral">'1'</font>;
+00129 *to++ = <font class="charliteral">' '</font>;
+00130 *to++ = <font class="charliteral">'\\'</font>;
+00131 *to++ = <font class="charliteral">'f'</font>;
+00132 *to++ = <font class="charliteral">'s'</font>;
+00133 *to++ = <font class="charliteral">'1'</font>;
+00134 *to++ = <font class="charliteral">'7'</font>;
+00135 *to++ = <font class="charliteral">' '</font>;
+00136 *to++ = <font class="charliteral">'('</font>;
+00137 <font class="keywordflow">continue</font>;
+00138 <font class="keywordflow">case</font> <font class="charliteral">'f'</font>: <font class="comment">// footnote end</font>
+00139 *to++ = <font class="charliteral">')'</font>;
+00140 *to++ = <font class="charliteral">' '</font>;
+00141 *to++ = <font class="charliteral">'}'</font>;
+00142 <font class="keywordflow">continue</font>;
+00143 }
+00144 <font class="keywordflow">break</font>;
+00145 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// font tags</font>
+00146 <font class="keywordflow">switch</font>(token[1]) {
+00147 <font class="keywordflow">case</font> <font class="charliteral">'I'</font>: <font class="comment">// italic start</font>
+00148 *to++ = <font class="charliteral">'\\'</font>;
+00149 *to++ = <font class="charliteral">'i'</font>;
+00150 *to++ = <font class="charliteral">'1'</font>;
+00151 *to++ = <font class="charliteral">' '</font>;
+00152 <font class="keywordflow">continue</font>;
+00153 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>: <font class="comment">// italic end</font>
+00154 *to++ = <font class="charliteral">'\\'</font>;
+00155 *to++ = <font class="charliteral">'i'</font>;
+00156 *to++ = <font class="charliteral">'0'</font>;
+00157 *to++ = <font class="charliteral">' '</font>;
+00158 <font class="keywordflow">continue</font>;
+00159 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">// bold start</font>
+00160 *to++ = <font class="charliteral">'\\'</font>;
+00161 *to++ = <font class="charliteral">'b'</font>;
+00162 *to++ = <font class="charliteral">'1'</font>;
+00163 *to++ = <font class="charliteral">' '</font>;
+00164 <font class="keywordflow">continue</font>;
+00165 <font class="keywordflow">case</font> <font class="charliteral">'b'</font>: <font class="comment">// bold end</font>
+00166 *to++ = <font class="charliteral">'\\'</font>;
+00167 *to++ = <font class="charliteral">'b'</font>;
+00168 *to++ = <font class="charliteral">'0'</font>;
+00169 *to++ = <font class="charliteral">' '</font>;
+00170 <font class="keywordflow">continue</font>;
+00171 <font class="keywordflow">case</font> <font class="charliteral">'N'</font>:
+00172 *to++ = <font class="charliteral">'{'</font>;
+00173 <font class="keywordflow">if</font> (!strnicmp(token+2, <font class="stringliteral">"Symbol"</font>, 6)) {
+00174 *to++ = <font class="charliteral">'\\'</font>;
+00175 *to++ = <font class="charliteral">'f'</font>;
+00176 *to++ = <font class="charliteral">'7'</font>;
+00177 *to++ = <font class="charliteral">' '</font>;
+00178 }
+00179 <font class="keywordflow">continue</font>;
+00180 <font class="keywordflow">case</font> <font class="charliteral">'n'</font>:
+00181 *to++ = <font class="charliteral">'}'</font>;
+00182 <font class="keywordflow">continue</font>;
+00183 <font class="keywordflow">case</font> <font class="charliteral">'S'</font>:
+00184 *to++ = <font class="charliteral">'{'</font>;
+00185 *to++ = <font class="charliteral">'\\'</font>;
+00186 *to++ = <font class="charliteral">'s'</font>;
+00187 *to++ = <font class="charliteral">'u'</font>;
+00188 *to++ = <font class="charliteral">'p'</font>;
+00189 *to++ = <font class="charliteral">'e'</font>;
+00190 *to++ = <font class="charliteral">'r'</font>;
+00191 *to++ = <font class="charliteral">' '</font>;
+00192 <font class="keywordflow">continue</font>;
+00193 <font class="keywordflow">case</font> <font class="charliteral">'s'</font>:
+00194 *to++ = <font class="charliteral">'}'</font>;
+00195 <font class="keywordflow">continue</font>;
+00196 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>:
+00197 *to++ = <font class="charliteral">'{'</font>;
+00198 *to++ = <font class="charliteral">'\\'</font>;
+00199 *to++ = <font class="charliteral">'c'</font>;
+00200 *to++ = <font class="charliteral">'f'</font>;
+00201 *to++ = <font class="charliteral">'6'</font>;
+00202 *to++ = <font class="charliteral">' '</font>;
+00203 <font class="keywordflow">continue</font>;
+00204 <font class="keywordflow">case</font> <font class="charliteral">'r'</font>:
+00205 *to++ = <font class="charliteral">'}'</font>;
+00206 <font class="keywordflow">continue</font>;
+00207 }
+00208 <font class="keywordflow">break</font>;
+00209 <font class="keywordflow">case</font> <font class="charliteral">'C'</font>: <font class="comment">// special character tags</font>
+00210 <font class="keywordflow">switch</font>(token[1]) {
+00211 <font class="keywordflow">case</font> <font class="charliteral">'A'</font>: <font class="comment">// ASCII value</font>
+00212 *to++ = (char)atoi(&amp;token[2]);
+00213 <font class="keywordflow">continue</font>;
+00214 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>:
+00215 *to++ = <font class="charliteral">'&gt;'</font>;
+00216 <font class="keywordflow">continue</font>;
+00217 <font class="keywordflow">case</font> <font class="charliteral">'L'</font>: <font class="comment">// line break</font>
+00218 *to++ = <font class="charliteral">'\\'</font>;
+00219 *to++ = <font class="charliteral">'l'</font>;
+00220 *to++ = <font class="charliteral">'i'</font>;
+00221 *to++ = <font class="charliteral">'n'</font>;
+00222 *to++ = <font class="charliteral">'e'</font>;
+00223 *to++ = <font class="charliteral">' '</font>;
+00224 <font class="keywordflow">continue</font>;
+00225 <font class="keywordflow">case</font> <font class="charliteral">'M'</font>: <font class="comment">// new paragraph</font>
+00226 *to++ = <font class="charliteral">'\\'</font>;
+00227 *to++ = <font class="charliteral">'p'</font>;
+00228 *to++ = <font class="charliteral">'a'</font>;
+00229 *to++ = <font class="charliteral">'r'</font>;
+00230 *to++ = <font class="charliteral">' '</font>;
+00231 <font class="keywordflow">continue</font>;
+00232 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>:
+00233 *to++ = <font class="charliteral">'&lt;'</font>;
+00234 }
+00235 <font class="keywordflow">break</font>;
+00236 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// title formatting</font>
+00237 <font class="keywordflow">switch</font>(token[1])
+00238 {
+00239 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Book title begin</font>
+00240 *to++ = <font class="charliteral">'{'</font>;
+00241 *to++ = <font class="charliteral">'\\'</font>;
+00242 *to++ = <font class="charliteral">'f'</font>;
+00243 *to++ = <font class="charliteral">'s'</font>;
+00244 *to++ = <font class="charliteral">'2'</font>;
+00245 *to++ = <font class="charliteral">'2'</font>;
+00246 *to++ = <font class="charliteral">' '</font>;
+00247 <font class="keywordflow">continue</font>;
+00248 <font class="keywordflow">case</font> <font class="charliteral">'t'</font>:
+00249 *to++ = <font class="charliteral">'}'</font>;
+00250 <font class="keywordflow">continue</font>;
+00251 <font class="keywordflow">case</font> <font class="charliteral">'S'</font>:
+00252 *to++ = <font class="charliteral">'\\'</font>;
+00253 *to++ = <font class="charliteral">'p'</font>;
+00254 *to++ = <font class="charliteral">'a'</font>;
+00255 *to++ = <font class="charliteral">'r'</font>;
+00256 *to++ = <font class="charliteral">' '</font>;
+00257 *to++ = <font class="charliteral">'{'</font>;
+00258 *to++ = <font class="charliteral">'\\'</font>;
+00259 *to++ = <font class="charliteral">'i'</font>;
+00260 *to++ = <font class="charliteral">'1'</font>;
+00261 *to++ = <font class="charliteral">'\\'</font>;
+00262 *to++ = <font class="charliteral">'b'</font>;
+00263 *to++ = <font class="charliteral">'1'</font>;
+00264 *to++ = <font class="charliteral">' '</font>;
+00265 <font class="keywordflow">continue</font>;
+00266 <font class="keywordflow">case</font> <font class="charliteral">'s'</font>:
+00267 *to++ = <font class="charliteral">'}'</font>;
+00268 *to++ = <font class="charliteral">'\\'</font>;
+00269 *to++ = <font class="charliteral">'p'</font>;
+00270 *to++ = <font class="charliteral">'a'</font>;
+00271 *to++ = <font class="charliteral">'r'</font>;
+00272 *to++ = <font class="charliteral">' '</font>;
+00273 <font class="keywordflow">continue</font>;
+00274 }
+00275 <font class="keywordflow">break</font>;
+00276
+00277 }
+00278 <font class="keywordflow">continue</font>;
+00279 }
+00280 <font class="keywordflow">if</font> (intoken) {
+00281 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00282 token[tokpos++] = *from;
+00283 token[tokpos+2] = 0;
+00284 }
+00285 <font class="keywordflow">else</font> *to++ = *from;
+00286 }
+00287 *to++ = 0;
+00288 *to = 0;
+00289 <font class="keywordflow">return</font> 0;
+00290 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfrtf_8h-source.html b/doc/api-documentation/html/gbfrtf_8h-source.html
new file mode 100644
index 0000000..208e65e
--- /dev/null
+++ b/doc/api-documentation/html/gbfrtf_8h-source.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfrtf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfrtf.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: gbfrtf_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef GBFRTF_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define GBFRTF_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_g_b_f_r_t_f.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_r_t_f.html">GBFRTF</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keyword">public</font>:
+00033 <a class="code" href="class_g_b_f_r_t_f.html">GBFRTF</a> ();
+00034 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00035 };
+00036
+00037 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfstrongs_8cpp-source.html b/doc/api-documentation/html/gbfstrongs_8cpp-source.html
new file mode 100644
index 0000000..064c24c
--- /dev/null
+++ b/doc/api-documentation/html/gbfstrongs_8cpp-source.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfstrongs.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfstrongs.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * gbfstrongs - SWFilter decendant to hide or show strongs number</font>
+00004 <font class="comment"> * in a GBF module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;gbfstrongs.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00012 <font class="preprocessor">#ifndef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::on[] = <font class="stringliteral">"On"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::off[] = <font class="stringliteral">"Off"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::optName[] = <font class="stringliteral">"Strong's Numbers"</font>;
+00021 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::optTip[] = <font class="stringliteral">"Toggles Strong's Numbers On and Off if they exist"</font>;
+00022
+00023
+00024 GBFStrongs::GBFStrongs() {
+00025 option = <font class="keyword">false</font>;
+00026 options.push_back(on);
+00027 options.push_back(off);
+00028 }
+00029
+00030
+00031 GBFStrongs::~GBFStrongs() {
+00032 }
+00033
+00034 <font class="keywordtype">void</font> GBFStrongs::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00035 {
+00036 option = (!stricmp(ival, on));
+00037 }
+00038
+00039 <font class="keyword">const</font> <font class="keywordtype">char</font> *GBFStrongs::getOptionValue()
+00040 {
+00041 <font class="keywordflow">return</font> (option) ? on:off;
+00042 }
+00043
+00044 <font class="keywordtype">char</font> GBFStrongs::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00045 {
+00046 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00051 <font class="keywordtype">int</font> word = 1;
+00052 <font class="keywordtype">char</font> val[128];
+00053 <font class="keywordtype">char</font> wordstr[5];
+00054 <font class="keywordtype">char</font> *valto;
+00055 <font class="keywordtype">char</font> *ch;
+00056 <font class="keywordtype">char</font> *textStart = text, *textEnd = 0;
+00057 <font class="keywordtype">bool</font> newText = <font class="keyword">false</font>;
+00058 string tmp;
+00059
+00060 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00061 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00062 memmove(&amp;text[maxlen - len], text, len);
+00063 from = &amp;text[maxlen - len];
+00064 }
+00065 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00066
+00067 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00068 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00069 intoken = <font class="keyword">true</font>;
+00070 tokpos = 0;
+00071 token[0] = 0;
+00072 token[1] = 0;
+00073 token[2] = 0;
+00074 textEnd = to;
+00075 <font class="keywordflow">continue</font>;
+00076 }
+00077 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00078 intoken = <font class="keyword">false</font>;
+00079 <font class="keywordflow">if</font> (*token == <font class="charliteral">'W'</font> &amp;&amp; (token[1] == <font class="charliteral">'G'</font> || token[1] == <font class="charliteral">'H'</font>)) { <font class="comment">// Strongs</font>
+00080 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a64">isProcessEntryAttributes</a>()) {
+00081 valto = val;
+00082 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 2; ((token[i]) &amp;&amp; (i &lt; 150)); i++)
+00083 *valto++ = token[i];
+00084 *valto = 0;
+00085 <font class="keywordflow">if</font> (atoi((!isdigit(*val))?val+1:val) &lt; 5627) {
+00086 <font class="comment">// normal strongs number</font>
+00087 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word++);
+00088 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Strongs"</font>] = val;
+00089 tmp = <font class="stringliteral">""</font>;
+00090 tmp.append(textStart, (<font class="keywordtype">int</font>)(textEnd - textStart));
+00091 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Text"</font>] = tmp;
+00092 newText = <font class="keyword">true</font>;
+00093 }
+00094 <font class="keywordflow">else</font> {
+00095 <font class="comment">// verb morph</font>
+00096 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
+00097 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>] = val;
+00098 }
+00099 }
+00100 <font class="keywordflow">if</font> (!option) {
+00101 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">' '</font>) || (from[1] == <font class="charliteral">','</font>) || (from[1] == <font class="charliteral">';'</font>) || (from[1] == <font class="charliteral">'.'</font>) || (from[1] == <font class="charliteral">'?'</font>) || (from[1] == <font class="charliteral">'!'</font>) || (from[1] == <font class="charliteral">')'</font>) || (from[1] == <font class="charliteral">'\''</font>) || (from[1] == <font class="charliteral">'\"'</font>)) {
+00102 <font class="keywordflow">if</font> (lastspace)
+00103 to--;
+00104 }
+00105 <font class="keywordflow">if</font> (newText) {textStart = to; newText = <font class="keyword">false</font>; }
+00106 <font class="keywordflow">continue</font>;
+00107 }
+00108 }
+00109 <font class="comment">// if not a strongs token, keep token in text</font>
+00110 *to++ = <font class="charliteral">'&lt;'</font>;
+00111 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00112 *to++ = *tok;
+00113 *to++ = <font class="charliteral">'&gt;'</font>;
+00114 <font class="keywordflow">if</font> (newText) {textStart = to; newText = <font class="keyword">false</font>; }
+00115 <font class="keywordflow">continue</font>;
+00116 }
+00117 <font class="keywordflow">if</font> (intoken) {
+00118 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00119 token[tokpos++] = *from;
+00120 token[tokpos+2] = 0;
+00121 }
+00122 <font class="keywordflow">else</font> {
+00123 *to++ = *from;
+00124 lastspace = (*from == <font class="charliteral">' '</font>);
+00125 }
+00126 }
+00127 *to++ = 0;
+00128 *to = 0;
+00129 <font class="keywordflow">return</font> 0;
+00130 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfstrongs_8h-source.html b/doc/api-documentation/html/gbfstrongs_8h-source.html
new file mode 100644
index 0000000..15b32ec
--- /dev/null
+++ b/doc/api-documentation/html/gbfstrongs_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfstrongs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfstrongs.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: gbfstrongs_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef GBFSTRONGS_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define GBFSTRONGS_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_g_b_f_strongs.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_strongs.html">GBFStrongs</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_g_b_f_strongs.html">GBFStrongs</a> ();
+00040 <font class="keyword">virtual</font> ~ GBFStrongs ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfthml_8cpp-source.html b/doc/api-documentation/html/gbfthml_8cpp-source.html
new file mode 100644
index 0000000..29d22b1
--- /dev/null
+++ b/doc/api-documentation/html/gbfthml_8cpp-source.html
@@ -0,0 +1,477 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfthml.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfthml.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> gbfthml.cpp - GBF to ThML filter</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 1999-10-27</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;gbfthml.h&gt;</font>
+00020
+00021
+00022 GBFThML::GBFThML()
+00023 {
+00024 }
+00025
+00026
+00027 <font class="keywordtype">char</font> GBFThML::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen)
+00028 {
+00029 <font class="keywordtype">char</font> *to, *from, token[2048];
+00030 <font class="keywordtype">int</font> tokpos = 0;
+00031 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00032 <font class="keywordtype">int</font> len;
+00033 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok;
+00034
+00035 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00036 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00037 memmove(&amp;text[maxlen - len], text, len);
+00038 from = &amp;text[maxlen - len];
+00039 }
+00040 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00041
+00042 <font class="keywordflow">for</font> (to = text; *from; from++)
+00043 {
+00044 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00045 intoken = <font class="keyword">true</font>;
+00046 tokpos = 0;
+00047 token[0] = 0;
+00048 token[1] = 0;
+00049 token[2] = 0;
+00050 <font class="keywordflow">continue</font>;
+00051 }
+00052 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>)
+00053 {
+00054 intoken = <font class="keyword">false</font>;
+00055 <font class="comment">// process desired tokens</font>
+00056 <font class="keywordflow">switch</font> (*token) {
+00057 <font class="keywordflow">case</font> <font class="charliteral">'W'</font>: <font class="comment">// Strongs</font>
+00058 <font class="keywordflow">switch</font>(token[1]) {
+00059 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>:
+00060 <font class="keywordflow">case</font> <font class="charliteral">'H'</font>:
+00061 *to++ = <font class="charliteral">'&lt;'</font>;
+00062 *to++ = <font class="charliteral">'s'</font>;
+00063 *to++ = <font class="charliteral">'y'</font>;
+00064 *to++ = <font class="charliteral">'n'</font>;
+00065 *to++ = <font class="charliteral">'c'</font>;
+00066 *to++ = <font class="charliteral">' '</font>;
+00067 *to++ = <font class="charliteral">'t'</font>;
+00068 *to++ = <font class="charliteral">'y'</font>;
+00069 *to++ = <font class="charliteral">'p'</font>;
+00070 *to++ = <font class="charliteral">'e'</font>;
+00071 *to++ = <font class="charliteral">'='</font>;
+00072 *to++ = <font class="charliteral">'"'</font>;
+00073 *to++ = <font class="charliteral">'S'</font>;
+00074 *to++ = <font class="charliteral">'t'</font>;
+00075 *to++ = <font class="charliteral">'r'</font>;
+00076 *to++ = <font class="charliteral">'o'</font>;
+00077 *to++ = <font class="charliteral">'n'</font>;
+00078 *to++ = <font class="charliteral">'g'</font>;
+00079 *to++ = <font class="charliteral">'s'</font>;
+00080 *to++ = <font class="charliteral">'"'</font>;
+00081 *to++ = <font class="charliteral">' '</font>;
+00082 *to++ = <font class="charliteral">'v'</font>;
+00083 *to++ = <font class="charliteral">'a'</font>;
+00084 *to++ = <font class="charliteral">'l'</font>;
+00085 *to++ = <font class="charliteral">'u'</font>;
+00086 *to++ = <font class="charliteral">'e'</font>;
+00087 *to++ = <font class="charliteral">'='</font>;
+00088 *to++ = <font class="charliteral">'"'</font>;
+00089 <font class="keywordflow">for</font> (tok = token + 1; *tok; tok++)
+00090 *to++ = *tok;
+00091 *to++ = <font class="charliteral">'"'</font>;
+00092 *to++ = <font class="charliteral">' '</font>;
+00093 *to++ = <font class="charliteral">'/'</font>;
+00094 *to++ = <font class="charliteral">'&gt;'</font>;
+00095 <font class="keywordflow">continue</font>;
+00096
+00097 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Tense</font>
+00098 *to++ = <font class="charliteral">'&lt;'</font>;
+00099 *to++ = <font class="charliteral">'s'</font>;
+00100 *to++ = <font class="charliteral">'y'</font>;
+00101 *to++ = <font class="charliteral">'n'</font>;
+00102 *to++ = <font class="charliteral">'c'</font>;
+00103 *to++ = <font class="charliteral">' '</font>;
+00104 *to++ = <font class="charliteral">'t'</font>;
+00105 *to++ = <font class="charliteral">'y'</font>;
+00106 *to++ = <font class="charliteral">'p'</font>;
+00107 *to++ = <font class="charliteral">'e'</font>;
+00108 *to++ = <font class="charliteral">'='</font>;
+00109 *to++ = <font class="charliteral">'"'</font>;
+00110 *to++ = <font class="charliteral">'M'</font>;
+00111 *to++ = <font class="charliteral">'o'</font>;
+00112 *to++ = <font class="charliteral">'r'</font>;
+00113 *to++ = <font class="charliteral">'p'</font>;
+00114 *to++ = <font class="charliteral">'h'</font>;
+00115 *to++ = <font class="charliteral">'"'</font>;
+00116 *to++ = <font class="charliteral">' '</font>;
+00117 *to++ = <font class="charliteral">'v'</font>;
+00118 *to++ = <font class="charliteral">'a'</font>;
+00119 *to++ = <font class="charliteral">'l'</font>;
+00120 *to++ = <font class="charliteral">'u'</font>;
+00121 *to++ = <font class="charliteral">'e'</font>;
+00122 *to++ = <font class="charliteral">'='</font>;
+00123 *to++ = <font class="charliteral">'"'</font>;
+00124 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00125 *to++ = *tok;
+00126 *to++ = <font class="charliteral">'"'</font>;
+00127 *to++ = <font class="charliteral">' '</font>;
+00128 *to++ = <font class="charliteral">'/'</font>;
+00129 *to++ = <font class="charliteral">'&gt;'</font>;
+00130 <font class="keywordflow">continue</font>;
+00131 }
+00132 <font class="keywordflow">break</font>;
+00133 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>:
+00134 <font class="keywordflow">switch</font>(token[1])
+00135 {
+00136 <font class="keywordflow">case</font> <font class="charliteral">'X'</font>:
+00137 *to++ = <font class="charliteral">'&lt;'</font>;
+00138 *to++ = <font class="charliteral">'a'</font>;
+00139 *to++ = <font class="charliteral">' '</font>;
+00140 *to++ = <font class="charliteral">'h'</font>;
+00141 *to++ = <font class="charliteral">'r'</font>;
+00142 *to++ = <font class="charliteral">'e'</font>;
+00143 *to++ = <font class="charliteral">'f'</font>;
+00144 *to++ = <font class="charliteral">'='</font>;
+00145 *to++ = <font class="charliteral">'\"'</font>;
+00146 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++) {
+00147 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'&lt;'</font> &amp;&amp; *tok+1 != <font class="charliteral">'R'</font> &amp;&amp; *tok+2 != <font class="charliteral">'x'</font>) {
+00148 *to++ = *tok;
+00149 }
+00150 <font class="keywordflow">else</font> {
+00151 <font class="keywordflow">break</font>;
+00152 }
+00153 }
+00154 *to++ = <font class="charliteral">'\"'</font>;
+00155 *to++ = <font class="charliteral">'&gt;'</font>;
+00156 <font class="keywordflow">continue</font>;
+00157 <font class="keywordflow">case</font> <font class="charliteral">'x'</font>:
+00158 *to++ = <font class="charliteral">'&lt;'</font>;
+00159 *to++ = <font class="charliteral">'/'</font>;
+00160 *to++ = <font class="charliteral">'a'</font>;
+00161 *to++ = <font class="charliteral">'&gt;'</font>;
+00162 <font class="keywordflow">continue</font>;
+00163 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// footnote begin</font>
+00164 *to++ = <font class="charliteral">'&lt;'</font>;
+00165 *to++ = <font class="charliteral">'n'</font>;
+00166 *to++ = <font class="charliteral">'o'</font>;
+00167 *to++ = <font class="charliteral">'t'</font>;
+00168 *to++ = <font class="charliteral">'e'</font>;
+00169 *to++ = <font class="charliteral">' '</font>;
+00170 *to++ = <font class="charliteral">'p'</font>;
+00171 *to++ = <font class="charliteral">'l'</font>;
+00172 *to++ = <font class="charliteral">'a'</font>;
+00173 *to++ = <font class="charliteral">'c'</font>;
+00174 *to++ = <font class="charliteral">'e'</font>;
+00175 *to++ = <font class="charliteral">'='</font>;
+00176 *to++ = <font class="charliteral">'"'</font>;
+00177 *to++ = <font class="charliteral">'f'</font>;
+00178 *to++ = <font class="charliteral">'o'</font>;
+00179 *to++ = <font class="charliteral">'o'</font>;
+00180 *to++ = <font class="charliteral">'t'</font>;
+00181 *to++ = <font class="charliteral">'"'</font>;
+00182 *to++ = <font class="charliteral">'&gt;'</font>;
+00183 <font class="keywordflow">continue</font>;
+00184 <font class="keywordflow">case</font> <font class="charliteral">'f'</font>: <font class="comment">// footnote end</font>
+00185 *to++ = <font class="charliteral">'&lt;'</font>;
+00186 *to++ = <font class="charliteral">'/'</font>;
+00187 *to++ = <font class="charliteral">'n'</font>;
+00188 *to++ = <font class="charliteral">'o'</font>;
+00189 *to++ = <font class="charliteral">'t'</font>;
+00190 *to++ = <font class="charliteral">'e'</font>;
+00191 *to++ = <font class="charliteral">'&gt;'</font>;
+00192 <font class="keywordflow">continue</font>;
+00193 }
+00194 <font class="keywordflow">break</font>;
+00195 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>: <font class="comment">// font tags</font>
+00196 <font class="keywordflow">switch</font>(token[1])
+00197 {
+00198 <font class="keywordflow">case</font> <font class="charliteral">'N'</font>:
+00199 *to++ = <font class="charliteral">'&lt;'</font>;
+00200 *to++ = <font class="charliteral">'f'</font>;
+00201 *to++ = <font class="charliteral">'o'</font>;
+00202 *to++ = <font class="charliteral">'n'</font>;
+00203 *to++ = <font class="charliteral">'t'</font>;
+00204 *to++ = <font class="charliteral">' '</font>;
+00205 *to++ = <font class="charliteral">'f'</font>;
+00206 *to++ = <font class="charliteral">'a'</font>;
+00207 *to++ = <font class="charliteral">'c'</font>;
+00208 *to++ = <font class="charliteral">'e'</font>;
+00209 *to++ = <font class="charliteral">'='</font>;
+00210 *to++ = <font class="charliteral">'"'</font>;
+00211 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++)
+00212 *to++ = *tok;
+00213 *to++ = <font class="charliteral">'"'</font>;
+00214 *to++ = <font class="charliteral">'&gt;'</font>;
+00215 <font class="keywordflow">continue</font>;
+00216 <font class="keywordflow">case</font> <font class="charliteral">'n'</font>:
+00217 *to++ = <font class="charliteral">'&lt;'</font>;
+00218 *to++ = <font class="charliteral">'/'</font>;
+00219 *to++ = <font class="charliteral">'f'</font>;
+00220 *to++ = <font class="charliteral">'o'</font>;
+00221 *to++ = <font class="charliteral">'n'</font>;
+00222 *to++ = <font class="charliteral">'t'</font>;
+00223 *to++ = <font class="charliteral">'&gt;'</font>;
+00224 <font class="keywordflow">continue</font>;
+00225 <font class="keywordflow">case</font> <font class="charliteral">'I'</font>: <font class="comment">// italic start</font>
+00226 *to++ = <font class="charliteral">'&lt;'</font>;
+00227 *to++ = <font class="charliteral">'i'</font>;
+00228 *to++ = <font class="charliteral">'&gt;'</font>;
+00229 <font class="keywordflow">continue</font>;
+00230 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>: <font class="comment">// italic end</font>
+00231 *to++ = <font class="charliteral">'&lt;'</font>;
+00232 *to++ = <font class="charliteral">'/'</font>;
+00233 *to++ = <font class="charliteral">'i'</font>;
+00234 *to++ = <font class="charliteral">'&gt;'</font>;
+00235 <font class="keywordflow">continue</font>;
+00236 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">// bold start</font>
+00237 *to++ = <font class="charliteral">'&lt;'</font>;
+00238 *to++ = <font class="charliteral">'b'</font>;
+00239 *to++ = <font class="charliteral">'&gt;'</font>;
+00240 <font class="keywordflow">continue</font>;
+00241 <font class="keywordflow">case</font> <font class="charliteral">'b'</font>: <font class="comment">// bold end</font>
+00242 *to++ = <font class="charliteral">'&lt;'</font>;
+00243 *to++ = <font class="charliteral">'/'</font>;
+00244 *to++ = <font class="charliteral">'b'</font>;
+00245 *to++ = <font class="charliteral">'&gt;'</font>;
+00246 <font class="keywordflow">continue</font>;
+00247
+00248 <font class="keywordflow">case</font> <font class="charliteral">'R'</font>: <font class="comment">// words of Jesus begin</font>
+00249 *to++ = <font class="charliteral">'&lt;'</font>;
+00250 *to++ = <font class="charliteral">'f'</font>;
+00251 *to++ = <font class="charliteral">'o'</font>;
+00252 *to++ = <font class="charliteral">'n'</font>;
+00253 *to++ = <font class="charliteral">'t'</font>;
+00254 *to++ = <font class="charliteral">' '</font>;
+00255 *to++ = <font class="charliteral">'c'</font>;
+00256 *to++ = <font class="charliteral">'o'</font>;
+00257 *to++ = <font class="charliteral">'l'</font>;
+00258 *to++ = <font class="charliteral">'o'</font>;
+00259 *to++ = <font class="charliteral">'r'</font>;
+00260 *to++ = <font class="charliteral">'='</font>;
+00261 *to++ = <font class="charliteral">'\"'</font>;
+00262 *to++ = <font class="charliteral">'#'</font>;
+00263 *to++ = <font class="charliteral">'f'</font>;
+00264 *to++ = <font class="charliteral">'f'</font>;
+00265 *to++ = <font class="charliteral">'0'</font>;
+00266 *to++ = <font class="charliteral">'0'</font>;
+00267 *to++ = <font class="charliteral">'0'</font>;
+00268 *to++ = <font class="charliteral">'0'</font>;
+00269 *to++ = <font class="charliteral">'\"'</font>;
+00270 *to++ = <font class="charliteral">'&gt;'</font>;
+00271 <font class="keywordflow">continue</font>;
+00272 <font class="keywordflow">case</font> <font class="charliteral">'r'</font>: <font class="comment">// words of Jesus end</font>
+00273 *to++ = <font class="charliteral">'&lt;'</font>;
+00274 *to++ = <font class="charliteral">'/'</font>;
+00275 *to++ = <font class="charliteral">'f'</font>;
+00276 *to++ = <font class="charliteral">'o'</font>;
+00277 *to++ = <font class="charliteral">'n'</font>;
+00278 *to++ = <font class="charliteral">'t'</font>;
+00279 *to++ = <font class="charliteral">'&gt;'</font>;
+00280 <font class="keywordflow">continue</font>;
+00281 <font class="keywordflow">case</font> <font class="charliteral">'U'</font>: <font class="comment">// Underline start</font>
+00282 *to++ = <font class="charliteral">'&lt;'</font>;
+00283 *to++ = <font class="charliteral">'u'</font>;
+00284 *to++ = <font class="charliteral">'&gt;'</font>;
+00285 <font class="keywordflow">continue</font>;
+00286 <font class="keywordflow">case</font> <font class="charliteral">'u'</font>: <font class="comment">// Underline end</font>
+00287 *to++ = <font class="charliteral">'&lt;'</font>;
+00288 *to++ = <font class="charliteral">'/'</font>;
+00289 *to++ = <font class="charliteral">'u'</font>;
+00290 *to++ = <font class="charliteral">'&gt;'</font>;
+00291 <font class="keywordflow">continue</font>;
+00292 <font class="keywordflow">case</font> <font class="charliteral">'O'</font>: <font class="comment">// Old Testament quote begin</font>
+00293 *to++ = <font class="charliteral">'&lt;'</font>;
+00294 *to++ = <font class="charliteral">'c'</font>;
+00295 *to++ = <font class="charliteral">'i'</font>;
+00296 *to++ = <font class="charliteral">'t'</font>;
+00297 *to++ = <font class="charliteral">'e'</font>;
+00298 *to++ = <font class="charliteral">'&gt;'</font>;
+00299 <font class="keywordflow">continue</font>;
+00300 <font class="keywordflow">case</font> <font class="charliteral">'o'</font>: <font class="comment">// Old Testament quote end</font>
+00301 *to++ = <font class="charliteral">'&lt;'</font>;
+00302 *to++ = <font class="charliteral">'/'</font>;
+00303 *to++ = <font class="charliteral">'c'</font>;
+00304 *to++ = <font class="charliteral">'i'</font>;
+00305 *to++ = <font class="charliteral">'t'</font>;
+00306 *to++ = <font class="charliteral">'e'</font>;
+00307 *to++ = <font class="charliteral">'&gt;'</font>;
+00308 <font class="keywordflow">continue</font>;
+00309 <font class="keywordflow">case</font> <font class="charliteral">'S'</font>: <font class="comment">// Superscript begin</font>
+00310 *to++ = <font class="charliteral">'&lt;'</font>;
+00311 *to++ = <font class="charliteral">'s'</font>;
+00312 *to++ = <font class="charliteral">'u'</font>;
+00313 *to++ = <font class="charliteral">'p'</font>;
+00314 *to++ = <font class="charliteral">'&gt;'</font>;
+00315 <font class="keywordflow">continue</font>;
+00316 <font class="keywordflow">case</font> <font class="charliteral">'s'</font>: <font class="comment">// Superscript end</font>
+00317 *to++ = <font class="charliteral">'&lt;'</font>;
+00318 *to++ = <font class="charliteral">'/'</font>;
+00319 *to++ = <font class="charliteral">'s'</font>;
+00320 *to++ = <font class="charliteral">'u'</font>;
+00321 *to++ = <font class="charliteral">'p'</font>;
+00322 *to++ = <font class="charliteral">'&gt;'</font>;
+00323 <font class="keywordflow">continue</font>;
+00324 <font class="keywordflow">case</font> <font class="charliteral">'V'</font>: <font class="comment">// Subscript begin</font>
+00325 *to++ = <font class="charliteral">'&lt;'</font>;
+00326 *to++ = <font class="charliteral">'s'</font>;
+00327 *to++ = <font class="charliteral">'u'</font>;
+00328 *to++ = <font class="charliteral">'b'</font>;
+00329 *to++ = <font class="charliteral">'&gt;'</font>;
+00330 <font class="keywordflow">continue</font>;
+00331 <font class="keywordflow">case</font> <font class="charliteral">'v'</font>: <font class="comment">// Subscript end</font>
+00332 *to++ = <font class="charliteral">'&lt;'</font>;
+00333 *to++ = <font class="charliteral">'/'</font>;
+00334 *to++ = <font class="charliteral">'s'</font>;
+00335 *to++ = <font class="charliteral">'u'</font>;
+00336 *to++ = <font class="charliteral">'b'</font>;
+00337 *to++ = <font class="charliteral">'&gt;'</font>;
+00338 <font class="keywordflow">continue</font>;
+00339 }
+00340 <font class="keywordflow">break</font>;
+00341 <font class="keywordflow">case</font> <font class="charliteral">'C'</font>: <font class="comment">// special character tags</font>
+00342 <font class="keywordflow">switch</font>(token[1])
+00343 {
+00344 <font class="keywordflow">case</font> <font class="charliteral">'A'</font>: <font class="comment">// ASCII value</font>
+00345 *to++ = (char)atoi(&amp;token[2]);
+00346 <font class="keywordflow">continue</font>;
+00347 <font class="keywordflow">case</font> <font class="charliteral">'G'</font>:
+00348 <font class="comment">//*to++ = ' ';</font>
+00349 <font class="keywordflow">continue</font>;
+00350 <font class="keywordflow">case</font> <font class="charliteral">'L'</font>: <font class="comment">// line break</font>
+00351 *to++ = <font class="charliteral">'&lt;'</font>;
+00352 *to++ = <font class="charliteral">'b'</font>;
+00353 *to++ = <font class="charliteral">'r'</font>;
+00354 *to++ = <font class="charliteral">' '</font>;
+00355 *to++ = <font class="charliteral">'/'</font>;
+00356 *to++ = <font class="charliteral">'&gt;'</font>;
+00357 *to++ = <font class="charliteral">' '</font>;
+00358 <font class="keywordflow">continue</font>;
+00359 <font class="keywordflow">case</font> <font class="charliteral">'M'</font>: <font class="comment">// new paragraph</font>
+00360 *to++ = <font class="charliteral">'&lt;'</font>;
+00361 *to++ = <font class="charliteral">'p'</font>;
+00362 *to++ = <font class="charliteral">' '</font>;
+00363 *to++ = <font class="charliteral">'/'</font>;
+00364 *to++ = <font class="charliteral">'&gt;'</font>;
+00365 <font class="keywordflow">continue</font>;
+00366 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>:
+00367 <font class="comment">//*to++ = ' ';</font>
+00368 <font class="keywordflow">continue</font>;
+00369 }
+00370 <font class="keywordflow">break</font>;
+00371 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// title formatting</font>
+00372 <font class="keywordflow">switch</font>(token[1])
+00373 {
+00374 <font class="keywordflow">case</font> <font class="charliteral">'T'</font>: <font class="comment">// Book title begin</font>
+00375 *to++ = <font class="charliteral">'&lt;'</font>;
+00376 *to++ = <font class="charliteral">'b'</font>;
+00377 *to++ = <font class="charliteral">'i'</font>;
+00378 *to++ = <font class="charliteral">'g'</font>;
+00379 *to++ = <font class="charliteral">'&gt;'</font>;
+00380 <font class="keywordflow">continue</font>;
+00381 <font class="keywordflow">case</font> <font class="charliteral">'t'</font>:
+00382 *to++ = <font class="charliteral">'&lt;'</font>;
+00383 *to++ = <font class="charliteral">'/'</font>;
+00384 *to++ = <font class="charliteral">'b'</font>;
+00385 *to++ = <font class="charliteral">'i'</font>;
+00386 *to++ = <font class="charliteral">'g'</font>;
+00387 *to++ = <font class="charliteral">'&gt;'</font>;
+00388 <font class="keywordflow">continue</font>;
+00389 <font class="keywordflow">case</font> <font class="charliteral">'S'</font>:
+00390 *to++ = <font class="charliteral">'&lt;'</font>;
+00391 *to++ = <font class="charliteral">'d'</font>;
+00392 *to++ = <font class="charliteral">'i'</font>;
+00393 *to++ = <font class="charliteral">'v'</font>;
+00394 *to++ = <font class="charliteral">' '</font>;
+00395 *to++ = <font class="charliteral">'c'</font>;
+00396 *to++ = <font class="charliteral">'l'</font>;
+00397 *to++ = <font class="charliteral">'a'</font>;
+00398 *to++ = <font class="charliteral">'s'</font>;
+00399 *to++ = <font class="charliteral">'s'</font>;
+00400 *to++ = <font class="charliteral">'='</font>;
+00401 *to++ = <font class="charliteral">'\"'</font>;
+00402 *to++ = <font class="charliteral">'s'</font>;
+00403 *to++ = <font class="charliteral">'e'</font>;
+00404 *to++ = <font class="charliteral">'c'</font>;
+00405 *to++ = <font class="charliteral">'h'</font>;
+00406 *to++ = <font class="charliteral">'e'</font>;
+00407 *to++ = <font class="charliteral">'a'</font>;
+00408 *to++ = <font class="charliteral">'d'</font>;
+00409 *to++ = <font class="charliteral">'\"'</font>;
+00410 *to++ = <font class="charliteral">'&gt;'</font>;
+00411 <font class="keywordflow">continue</font>;
+00412 <font class="keywordflow">case</font> <font class="charliteral">'s'</font>:
+00413 *to++ = <font class="charliteral">'&lt;'</font>;
+00414 *to++ = <font class="charliteral">'/'</font>;
+00415 *to++ = <font class="charliteral">'d'</font>;
+00416 *to++ = <font class="charliteral">'i'</font>;
+00417 *to++ = <font class="charliteral">'v'</font>;
+00418 *to++ = <font class="charliteral">'&gt;'</font>;
+00419 <font class="keywordflow">continue</font>;
+00420 }
+00421 <font class="keywordflow">break</font>;
+00422
+00423 <font class="keywordflow">case</font> <font class="charliteral">'P'</font>: <font class="comment">// special formatting</font>
+00424 <font class="keywordflow">switch</font>(token[1])
+00425 {
+00426 <font class="keywordflow">case</font> <font class="charliteral">'P'</font>: <font class="comment">// Poetry begin</font>
+00427 *to++ = <font class="charliteral">'&lt;'</font>;
+00428 *to++ = <font class="charliteral">'v'</font>;
+00429 *to++ = <font class="charliteral">'e'</font>;
+00430 *to++ = <font class="charliteral">'r'</font>;
+00431 *to++ = <font class="charliteral">'s'</font>;
+00432 *to++ = <font class="charliteral">'e'</font>;
+00433 *to++ = <font class="charliteral">'&gt;'</font>;
+00434 <font class="keywordflow">continue</font>;
+00435 <font class="keywordflow">case</font> <font class="charliteral">'p'</font>:
+00436 *to++ = <font class="charliteral">'&lt;'</font>;
+00437 *to++ = <font class="charliteral">'/'</font>;
+00438 *to++ = <font class="charliteral">'v'</font>;
+00439 *to++ = <font class="charliteral">'e'</font>;
+00440 *to++ = <font class="charliteral">'r'</font>;
+00441 *to++ = <font class="charliteral">'s'</font>;
+00442 *to++ = <font class="charliteral">'e'</font>;
+00443 *to++ = <font class="charliteral">'&gt;'</font>;
+00444 <font class="keywordflow">continue</font>;
+00445 }
+00446 <font class="keywordflow">break</font>;
+00447 }
+00448 <font class="keywordflow">continue</font>;
+00449 }
+00450 <font class="keywordflow">if</font> (intoken) {
+00451 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00452 token[tokpos++] = *from;
+00453 token[tokpos+2] = 0;
+00454 }
+00455 <font class="keywordflow">else</font> *to++ = *from;
+00456 }
+00457 *to++ = 0;
+00458 *to = 0;
+00459 <font class="keywordflow">return</font> 0;
+00460 }
+00461
+00462
+00463
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/gbfthml_8h-source.html b/doc/api-documentation/html/gbfthml_8h-source.html
new file mode 100644
index 0000000..d6e42fb
--- /dev/null
+++ b/doc/api-documentation/html/gbfthml_8h-source.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfthml.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfthml.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> gbfthml.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 1999-10-28</font>
+00005 <font class="comment"> copyright : 1999 by Chris Little</font>
+00006 <font class="comment"> email : chrislit@chiasma.org</font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. *</font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="preprocessor">#ifndef GBFTHML_H</font>
+00019 <font class="preprocessor"></font><font class="preprocessor">#define GBFTHML_H</font>
+00020 <font class="preprocessor"></font>
+00021 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00022
+00023 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00024
+<a name="l00027"></a><a class="code" href="class_g_b_f_th_m_l.html">00027</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_g_b_f_th_m_l.html">GBFThML</a>:<font class="keyword">public</font> SWFilter
+00028 {
+00029 <font class="keyword">public</font>:
+00030 <a class="code" href="class_g_b_f_th_m_l.html">GBFThML</a> ();
+00031 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen = -1);
+00032 };
+00033
+00034 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/graph_legend.dot b/doc/api-documentation/html/graph_legend.dot
new file mode 100644
index 0000000..bda2ddb
--- /dev/null
+++ b/doc/api-documentation/html/graph_legend.dot
@@ -0,0 +1,20 @@
+digraph inheritance
+{
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",style="filled" fontcolor="white"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="Helvetica"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="Helvetica"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="Helvetica"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="Helvetica"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"];
+}
diff --git a/doc/api-documentation/html/graph_legend.html b/doc/api-documentation/html/graph_legend.html
new file mode 100644
index 0000000..8c7f1a8
--- /dev/null
+++ b/doc/api-documentation/html/graph_legend.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.
+<p>
+ Consider the following example: <div class="fragment"><pre><font class="comment">/*! Invisible class because of truncation */</font>
+<font class="keyword">class </font>Invisible { };
+<font class="comment"></font>
+<font class="comment">/*! Truncated class, inheritance relation is hidden */</font>
+<font class="keyword">class </font>Truncated : <font class="keyword">public</font> Invisible { };
+
+<font class="comment">/* Class not documented with doxygen comments */</font>
+<font class="keyword">class </font>Undocumented { };
+<font class="comment"></font>
+<font class="comment">/*! Class that is inherited using public inheritance */</font>
+<font class="keyword">class </font>PublicBase : <font class="keyword">public</font> Truncated { };
+<font class="comment"></font>
+<font class="comment">/*! A template class */</font>
+<font class="keyword">template</font>&lt;<font class="keyword">class</font> T&gt; <font class="keyword">class </font>Templ { };
+<font class="comment"></font>
+<font class="comment">/*! Class that is inherited using protected inheritance */</font>
+<font class="keyword">class </font>ProtectedBase { };
+<font class="comment"></font>
+<font class="comment">/*! Class that is inherited using private inheritance */</font>
+<font class="keyword">class </font>PrivateBase { };
+<font class="comment"></font>
+<font class="comment">/*! Class that is used by the Inherited class */</font>
+<font class="keyword">class </font>Used { };
+<font class="comment"></font>
+<font class="comment">/*! Super class that inherits a number of other classes */</font>
+<font class="keyword">class </font>Inherited : <font class="keyword">public</font> PublicBase,
+ <font class="keyword">protected</font> ProtectedBase,
+ <font class="keyword">private</font> PrivateBase,
+ <font class="keyword">public</font> Undocumented
+ <font class="keyword">public</font> Templ&lt;int&gt;
+{
+ <font class="keyword">private</font>:
+ Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:
+<p>
+<center>
+<img src="graph_legend.png"></center>
+
+<p>
+ The boxes in the above graph have the following meaning: <ul>
+<li>A filled black box represents the struct or class for which the graph is generated. <li>A box with a black border denotes a documented struct or class. <li>A box with a grey border denotes an undocumented struct or class. <li>A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </ul>
+The arrows have the following meaning: <ul>
+<li>A dark blue arrow is used to visualize a public inheritance relation between two classes. <li>A dark green arrow is used for protected inheritance. <li>A dark red arrow is used for private inheritance. <li>A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. <li>A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/graph_legend.png b/doc/api-documentation/html/graph_legend.png
new file mode 100644
index 0000000..344ea7f
--- /dev/null
+++ b/doc/api-documentation/html/graph_legend.png
Binary files differ
diff --git a/doc/api-documentation/html/greeklexattribs_8cpp-source.html b/doc/api-documentation/html/greeklexattribs_8cpp-source.html
new file mode 100644
index 0000000..cb4b36e
--- /dev/null
+++ b/doc/api-documentation/html/greeklexattribs_8cpp-source.html
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>greeklexattribs.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>greeklexattribs.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * greeklexattribs - SWFilter decendant to set entry attributes for greek</font>
+00004 <font class="comment"> * lexicons</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;greeklexattribs.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00012
+00013
+00014 GreekLexAttribs::GreekLexAttribs() {
+00015 }
+00016
+00017
+00018 <font class="keywordtype">char</font> GreekLexAttribs::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module) {
+00019
+00020 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a64">isProcessEntryAttributes</a>()) {
+00021 <font class="keywordtype">char</font> *from;
+00022 <font class="keywordtype">bool</font> inAV = <font class="keyword">false</font>;
+00023 string phrase;
+00024 string freq;
+00025 <font class="keywordtype">char</font> val[128], *valto;
+00026 <font class="keywordtype">char</font> wordstr[7];
+00027 <font class="keywordtype">char</font> *currentPhrase = 0, *ch = 0;
+00028 <font class="keywordtype">char</font> *currentPhraseEnd = 0;
+00029 <font class="keywordtype">int</font> number = 0;
+00030
+00031
+00032 <font class="keywordflow">for</font> (from = text; *from; from++) {
+00033 <font class="keywordflow">if</font> (inAV) {
+00034 <font class="keywordflow">if</font> (currentPhrase == 0) {
+00035 <font class="keywordflow">if</font> (isalpha(*from))
+00036 currentPhrase = from;
+00037 }
+00038 <font class="keywordflow">else</font> {
+00039 <font class="keywordflow">if</font> ((!isalpha(*from)) &amp;&amp; (*from != <font class="charliteral">' '</font>) &amp;&amp; (*from != <font class="charliteral">'+'</font>) &amp;&amp; (*from !=<font class="charliteral">'('</font>) &amp;&amp; (*from != <font class="charliteral">')'</font>) &amp;&amp; (*from != <font class="charliteral">'\''</font>)) {
+00040 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00041 <font class="keywordflow">if</font> (!currentPhraseEnd)
+00042 currentPhraseEnd = from - 1;
+00043 <font class="keywordflow">for</font> (; *from &amp;&amp; *from != <font class="charliteral">'&gt;'</font>; from++) {
+00044 <font class="keywordflow">if</font> (!strncmp(from, <font class="stringliteral">"value=\""</font>, 7)) {
+00045 valto = val;
+00046 from += 7;
+00047 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 0; from[i] != <font class="charliteral">'\"'</font> &amp;&amp; i &lt; 127; i++)
+00048 *valto++ = from[i];
+00049 *valto = 0;
+00050 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, number+1);
+00051 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"AVPhrase"</font>][wordstr][<font class="stringliteral">"CompoundedWith"</font>] = val;
+00052 from += strlen(val);
+00053 }
+00054 }
+00055 <font class="keywordflow">continue</font>;
+00056 }
+00057
+00058 phrase = <font class="stringliteral">""</font>;
+00059 phrase.append(currentPhrase, (<font class="keywordtype">int</font>)(((currentPhraseEnd)?currentPhraseEnd:from) - currentPhrase)-1);
+00060 currentPhrase = from;
+00061 <font class="keywordflow">while</font> (*from &amp;&amp; isdigit(*from)) from++;
+00062 freq = <font class="stringliteral">""</font>;
+00063 freq.append(currentPhrase, (<font class="keywordtype">int</font>)(from - currentPhrase));
+00064 <font class="keywordflow">if</font> ((freq.length() &gt; 0) &amp;&amp; (phrase.length() &gt; 0)) {
+00065 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, ++number);
+00066 <font class="keywordflow">if</font> ((strchr(phrase.c_str(), <font class="charliteral">'('</font>) &gt; phrase.c_str()) &amp;&amp; (strchr(phrase.c_str(), <font class="charliteral">')'</font>) &gt; phrase.c_str() + 1)) {
+00067 string tmp = phrase.substr(0, phrase.find_first_of(<font class="stringliteral">"("</font>));
+00068 phrase.erase(phrase.find_first_of(<font class="stringliteral">"("</font>), 1);
+00069 phrase.erase(phrase.find_first_of(<font class="stringliteral">")"</font>), 1);
+00070 phrase.erase(0,phrase.find_first_not_of(<font class="stringliteral">"\r\n\v\t "</font>)); phrase.erase(phrase.find_last_not_of(<font class="stringliteral">"\r\n\v\t "</font>)+1);
+00071 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"AVPhrase"</font>][wordstr][<font class="stringliteral">"Alt"</font>] = phrase;
+00072 phrase = tmp;
+00073 }
+00074 phrase.erase(0,phrase.find_first_not_of(<font class="stringliteral">"\r\n\v\t "</font>)); phrase.erase(phrase.find_last_not_of(<font class="stringliteral">"\r\n\v\t "</font>)+1);
+00075 freq.erase(0,freq.find_first_not_of(<font class="stringliteral">"\r\n\v\t "</font>)); freq.erase(freq.find_last_not_of(<font class="stringliteral">"\r\n\v\t "</font>)+1);
+00076 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"AVPhrase"</font>][wordstr][<font class="stringliteral">"Phrase"</font>] = phrase;
+00077 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"AVPhrase"</font>][wordstr][<font class="stringliteral">"Frequency"</font>] = freq;
+00078 currentPhrase = 0;
+00079 currentPhraseEnd = 0;
+00080 }
+00081 }
+00082 }
+00083 <font class="keywordflow">if</font> (*from == <font class="charliteral">';'</font>) inAV = <font class="keyword">false</font>;
+00084
+00085 }
+00086 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(from, <font class="stringliteral">"AV-"</font>, 3)) {
+00087 inAV = <font class="keyword">true</font>;
+00088 from+=2;
+00089 }
+00090 }
+00091 }
+00092 <font class="keywordflow">return</font> 0;
+00093 }
+00094
+00095
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/greeklexattribs_8h-source.html b/doc/api-documentation/html/greeklexattribs_8h-source.html
new file mode 100644
index 0000000..f67415b
--- /dev/null
+++ b/doc/api-documentation/html/greeklexattribs_8h-source.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>greeklexattribs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>greeklexattribs.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlplain.h</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef GREEKLEXATTRIBS_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define GREEKLEXATTRIBS_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_greek_lex_attribs.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_greek_lex_attribs.html">GreekLexAttribs</a>:<font class="keyword">public</font> SWFilter {
+00031 <font class="keyword">public</font>:
+00032 <a class="code" href="class_greek_lex_attribs.html">GreekLexAttribs</a>();
+00033 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00034 };
+00035
+00036 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/hebrewmcim_8cpp-source.html b/doc/api-documentation/html/hebrewmcim_8cpp-source.html
new file mode 100644
index 0000000..6ec69fa
--- /dev/null
+++ b/doc/api-documentation/html/hebrewmcim_8cpp-source.html
@@ -0,0 +1,658 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>hebrewmcim.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>hebrewmcim.cpp</h1><div class="fragment"><pre>00001
+00011 <font class="preprocessor">#include &lt;hebrewmcim.h&gt;</font>
+00012
+00013 HebrewMCIM::HebrewMCIM()
+00014 :<a class="code" href="class_s_w_input_method.html">SWInputMethod</a>() {
+00015
+00016 init();
+00017 }
+00018
+00019
+00020 <font class="keywordtype">int</font> *HebrewMCIM::translate(<font class="keywordtype">char</font> in) {
+00021 <font class="keywordtype">int</font> retVal = 0;
+00022 <font class="keyword">static</font> <font class="keywordtype">int</font> retString[5];
+00023 <font class="keywordtype">int</font> retStringIndex = 0;
+00024
+00025 memset(retString, 0, 5);
+00026
+00027 <font class="keywordflow">if</font> (getState() &gt; 1) {
+00028 <font class="keywordflow">if</font> (getState() &gt;= 12) { <font class="comment">// serious issue with internal structure</font>
+00029 setState(0);
+00030 retString[retStringIndex++] = in;
+00031 <font class="keywordflow">return</font> retString;
+00032 }
+00033 map&lt;int, int&gt;::iterator find = subst2[getState()].find(in);
+00034 <font class="keywordflow">if</font> (find != subst2[getState()].end())
+00035 retVal = find-&gt;second;
+00036 <font class="keywordflow">else</font> retVal = in;
+00037
+00038 setState(0);
+00039 retString[retStringIndex++] = retVal;
+00040 <font class="keywordflow">return</font> retString;
+00041 }
+00042 <font class="keywordflow">else</font> {
+00043 retVal = subst[in];
+00044
+00045 <font class="keywordflow">if</font> (retVal == 0) {
+00046 setState(0);
+00047 retString[retStringIndex++] = in;
+00048 <font class="keywordflow">return</font> retString;
+00049 }
+00050 <font class="keywordflow">if</font> (retVal &gt; 100) {
+00051 setState(1);
+00052 retString[retStringIndex++] = retVal;
+00053 <font class="keywordflow">return</font> retString;
+00054 }
+00055 <font class="keywordflow">if</font> (retVal == 50) { <font class="comment">// multiChar</font>
+00056 setState(1);
+00057 <font class="keywordtype">int</font> *chars = multiChars[in];
+00058 <font class="keywordflow">if</font> (chars != 0) {
+00059 retString[retStringIndex++] = chars[0];
+00060 retString[retStringIndex++] = chars[1];
+00061 <font class="keywordflow">return</font> retString;
+00062 }
+00063 }
+00064 }
+00065 setState(retVal);
+00066 <font class="keywordflow">return</font> 0;
+00067 }
+00068
+00069
+00070 <font class="keywordtype">void</font> HebrewMCIM::init() {
+00071 memset(subst, 0, 255);
+00072
+00073 subst[<font class="charliteral">')'</font>] = 1488;
+00074 subst[<font class="charliteral">'B'</font>] = 1489;
+00075 subst[<font class="charliteral">'G'</font>] = 1490;
+00076 subst[<font class="charliteral">'D'</font>] = 1491;
+00077 subst[<font class="charliteral">'H'</font>] = 1492;
+00078 subst[<font class="charliteral">'W'</font>] = 1493;
+00079 subst[<font class="charliteral">'Z'</font>] = 1494;
+00080 subst[<font class="charliteral">'X'</font>] = 1495;
+00081 subst[<font class="charliteral">'+'</font>] = 1496;
+00082 subst[<font class="charliteral">'Y'</font>] = 1497;
+00083
+00084 subst[<font class="charliteral">'k'</font>] = 1498; <font class="comment">// finals</font>
+00085 subst[<font class="charliteral">'m'</font>] = 1501;
+00086 subst[<font class="charliteral">'n'</font>] = 1503;
+00087 subst[<font class="charliteral">'c'</font>] = 1509;
+00088
+00089 subst[<font class="charliteral">'P'</font>] = 1508;
+00090 subst[<font class="charliteral">'K'</font>] = 1499;
+00091 subst[<font class="charliteral">'L'</font>] = 1500;
+00092 subst[<font class="charliteral">'M'</font>] = 1502;
+00093 subst[<font class="charliteral">'N'</font>] = 1504;
+00094 subst[<font class="charliteral">'S'</font>] = 1505;
+00095 subst[<font class="charliteral">'('</font>] = 1506;
+00096 subst[<font class="charliteral">'p'</font>] = 1507;
+00097 subst[<font class="charliteral">'C'</font>] = 1510;
+00098 subst[<font class="charliteral">'Q'</font>] = 1511;
+00099 subst[<font class="charliteral">'R'</font>] = 1512;
+00100 subst[<font class="charliteral">'#'</font>] = 1513;
+00101
+00102 <font class="comment">// special multiChars</font>
+00103 subst[<font class="charliteral">'&amp;'</font>] = 50;
+00104 subst[<font class="charliteral">'$'</font>] = 50;
+00105
+00106 <font class="keyword">static</font> <font class="keywordtype">int</font> x[] = {1513, 1474};
+00107 multiChars[<font class="charliteral">'&amp;'</font>] = x;
+00108 <font class="keyword">static</font> <font class="keywordtype">int</font> y[] = {1513, 1473};
+00109 multiChars[<font class="charliteral">'$'</font>] = y;
+00110
+00111 subst[<font class="charliteral">'T'</font>] = 1514;
+00112
+00113 <font class="comment">// VOWELS</font>
+00114 subst[<font class="charliteral">'A'</font>] = 1463;
+00115 subst[<font class="charliteral">'F'</font>] = 1464;
+00116 subst[<font class="charliteral">'E'</font>] = 1462;
+00117 subst[<font class="charliteral">'"'</font>] = 1461;
+00118 subst[<font class="charliteral">'I'</font>] = 1460;
+00119 subst[<font class="charliteral">'O'</font>] = 1465;
+00120 subst[<font class="charliteral">'U'</font>] = 1467;
+00121
+00122
+00123
+00124 <font class="comment">// OTHER DIACRITICS</font>
+00125 subst[<font class="charliteral">'.'</font>] = 1468;
+00126 subst[<font class="charliteral">'-'</font>] = 1470;
+00127 subst[<font class="charliteral">','</font>] = 1471;
+00128
+00129 <font class="comment">// Compound input</font>
+00130
+00131 <font class="comment">// CANTILLATION</font>
+00132
+00133 subst[<font class="charliteral">':'</font>] = 2;
+00134 subst2[2][<font class="charliteral">'A'</font>] = 1458;
+00135 subst2[2][<font class="charliteral">'E'</font>] = 1457;
+00136 subst2[2][<font class="charliteral">'F'</font>] = 1459;
+00137
+00138
+00139 <font class="comment">/* Telisha qetana is postpositive as in '04' above. However, Michigan</font>
+00140 <font class="comment"># code '24' is for a medial telisha. Graphically, there is no</font>
+00141 <font class="comment"># difference.</font>
+00142 <font class="comment"> */</font>
+00143 subst[<font class="charliteral">'2'</font>] = 5;
+00144 subst2[5][<font class="charliteral">'4'</font>] = 1449;
+00145
+00146
+00147 <font class="comment">/* Note Michigan encoding distinguishes between medial metheg '35' (occuring</font>
+00148 <font class="comment"># on the left of the vowel), and the ordinary meteg '95' (occuring on the</font>
+00149 <font class="comment"># right of the vowel). It is also used for silluq.</font>
+00150 <font class="comment"> */</font>
+00151 subst[<font class="charliteral">'3'</font>] = 6;
+00152 subst2[6][<font class="charliteral">'3'</font>] = 1433;
+00153 subst2[6][<font class="charliteral">'5'</font>] = 1469;
+00154
+00155
+00156 <font class="comment">/* The Michigan code of telisha gedola in medial position. Graphically,</font>
+00157 <font class="comment"># there is no difference.</font>
+00158 <font class="comment"> */</font>
+00159 subst[<font class="charliteral">'4'</font>] = 7;
+00160 subst2[7][<font class="charliteral">'4'</font>] = 1440;
+00161
+00162 subst[<font class="charliteral">'6'</font>] = 8;
+00163 subst2[8][<font class="charliteral">'0'</font>] = 1451;
+00164 subst2[8][<font class="charliteral">'1'</font>] = 1436;
+00165
+00166 subst[<font class="charliteral">'1'</font>] = 4;
+00167 subst2[4][<font class="charliteral">'0'</font>] = 1434;
+00168
+00169 <font class="comment">/* In the poetic books, prepositive dehi occurs; it's unclear whether</font>
+00170 <font class="comment"># tipeha also occurs in the poetic books. Otherwise, we could simply</font>
+00171 <font class="comment"># check for what book in the Tanach we are in. Michigan uses the same</font>
+00172 <font class="comment"># code for each.</font>
+00173 <font class="comment"> */</font>
+00174
+00175 subst2[4][<font class="charliteral">'3'</font>] = 1430;
+00176
+00177 <font class="comment">/* This is the poetic accent mugrash, which also includes rebia, but is</font>
+00178 <font class="comment"># encoded separately as '81' in the Michigan text.</font>
+00179 <font class="comment"> */</font>
+00180 subst2[4][<font class="charliteral">'1'</font>] = 1437;
+00181 subst2[4][<font class="charliteral">'4'</font>] = 1440;
+00182
+00183
+00184 subst[<font class="charliteral">'0'</font>] = 3;
+00185 subst2[3][<font class="charliteral">'0'</font>] = 1475;
+00186 subst2[3][<font class="charliteral">'1'</font>] = 1426;
+00187
+00188 <font class="comment">/* According to BHS, zarqa and sinnor are both postpositive. However,</font>
+00189 <font class="comment"># the Michigan encoding uses one code for both. The Unicode zarqa</font>
+00190 <font class="comment"># (0x0598) is definitely NOT postpositive. And further, the shape of</font>
+00191 <font class="comment"># the symbol is different in BHS and Uniocde. This needs further</font>
+00192 <font class="comment"># research to determine what's going on here. For now, we follow BHS</font>
+00193 <font class="comment"># and use the postpositive Unicode zinor or both accents.</font>
+00194 <font class="comment"> */</font>
+00195
+00196 subst2[3][<font class="charliteral">'2'</font>] = 1454;
+00197
+00198 <font class="comment">/* Pashta is postpositive, and the Unicode equivalent reflects</font>
+00199 <font class="comment"># this. However, there is a poetic equivalent -- azla legarmeh --</font>
+00200 <font class="comment"># which is not postpositive, but no equivalent code point exists in</font>
+00201 <font class="comment"># Unicode. The Michigan encoding does not distinguish between the two,</font>
+00202 <font class="comment"># although it could be algorithmically determined.</font>
+00203 <font class="comment"> */</font>
+00204
+00205 subst2[3][<font class="charliteral">'3'</font>] = 1433;
+00206 subst2[3][<font class="charliteral">'4'</font>] = 1449;
+00207 subst2[3][<font class="charliteral">'5'</font>] = 1472;
+00208
+00209
+00210 <font class="comment">/* This is the Unicode Hebrew *accent*; there is also another Hebrew</font>
+00211 <font class="comment"># *punctuation* called GERSHAYIM 0x05F4. I'm using the more</font>
+00212 <font class="comment"># traditional rounded marks, rather than the alternate straight</font>
+00213 <font class="comment"># marks.</font>
+00214 <font class="comment"> */</font>
+00215
+00216 subst2[8][<font class="charliteral">'2'</font>] = 1438;
+00217
+00218 <font class="comment">// Also known as azla</font>
+00219 subst2[8][<font class="charliteral">'3'</font>] = 1448;
+00220 subst2[8][<font class="charliteral">'4'</font>] = 1452;
+00221 subst2[8][<font class="charliteral">'5'</font>] = 1427;
+00222
+00223
+00224 subst[<font class="charliteral">'8'</font>] = 9;
+00225 subst2[9][<font class="charliteral">'0'</font>] = 1428;
+00226 subst2[9][<font class="charliteral">'1'</font>] = 1431;
+00227
+00228 <font class="comment">/* Note, this accent is actually sinnorit, but it does not exist as a</font>
+00229 <font class="comment"># separate glyph in the Unicode standard. The 'ZINOR' Unicode accent</font>
+00230 <font class="comment"># is postpositive, while sinnorit is not. ZARQA is as close as I can</font>
+00231 <font class="comment"># get to this.</font>
+00232 <font class="comment"> */</font>
+00233 subst2[9][<font class="charliteral">'2'</font>] = 1432;
+00234
+00235 <font class="comment">/* The Unicode form does not match the form used by BHS, but the names</font>
+00236 <font class="comment"># are the same.</font>
+00237 <font class="comment"> */</font>
+00238 subst2[9][<font class="charliteral">'3'</font>] = 1441;
+00239 subst2[9][<font class="charliteral">'4'</font>] = 1439;
+00240 subst2[9][<font class="charliteral">'5'</font>] = 1429;
+00241
+00242 subst[<font class="charliteral">'7'</font>] = 10;
+00243 subst2[10][<font class="charliteral">'0'</font>] = 1444;
+00244 subst2[10][<font class="charliteral">'1'</font>] = 1445;
+00245 subst2[10][<font class="charliteral">'2'</font>] = 1446;
+00246 subst2[10][<font class="charliteral">'3'</font>] = 1430; <font class="comment">// also '13', '73' also is used for majela</font>
+00247 subst2[10][<font class="charliteral">'4'</font>] = 1443;
+00248 subst2[10][<font class="charliteral">'5'</font>] = 1469; <font class="comment">// this is silluq; should appear to the left of the vowel</font>
+00249
+00250 subst[<font class="charliteral">'9'</font>] = 11;
+00251 subst2[11][<font class="charliteral">'1'</font>] = 1435;
+00252 subst2[11][<font class="charliteral">'2'</font>] = 1425;
+00253 subst2[11][<font class="charliteral">'3'</font>] = 1450;
+00254 subst2[11][<font class="charliteral">'4'</font>] = 1447;
+00255 subst2[11][<font class="charliteral">'5'</font>] = 1469; <font class="comment">// should appear to the right of the vowel</font>
+00256
+00257 }
+00258
+00259 <font class="comment">/*</font>
+00260 <font class="comment"></font>
+00261 <font class="comment"></font>
+00262 <font class="comment"># CANTILLION MARKS</font>
+00263 <font class="comment"></font>
+00264 <font class="comment"> my $ETNAHTA = '&amp;#1425;';</font>
+00265 <font class="comment"># officially the Unicode name for this symbol was "SEGOL." However, that is</font>
+00266 <font class="comment"># not a unique name, conflicting with the vowel of the same name. Further,</font>
+00267 <font class="comment"># the position of the symbol is different. I have changed the name of the</font>
+00268 <font class="comment"># accent to "SEGOLTA," the traditional name for this accent.</font>
+00269 <font class="comment"> my $SEGOLTA = '&amp;#1426;';</font>
+00270 <font class="comment"> my $SHALSHELET = '&amp;#1427;';</font>
+00271 <font class="comment"> my $ZAQEF_QATAN = '&amp;#1428;';</font>
+00272 <font class="comment"> my $ZAQEF_GADOL = '&amp;#1429;';</font>
+00273 <font class="comment"> my $TIPEHA = '&amp;#1430;';</font>
+00274 <font class="comment"> my $REVIA = '&amp;#1431;';</font>
+00275 <font class="comment"> my $ZARQA = '&amp;#1432;';</font>
+00276 <font class="comment"> my $PASHTA = '&amp;#1433;';</font>
+00277 <font class="comment"> my $YETIV = '&amp;#1434;';</font>
+00278 <font class="comment"> my $TEVIR = '&amp;#1435;';</font>
+00279 <font class="comment"> my $GERESH = '&amp;#1436;';</font>
+00280 <font class="comment"> my $GERESH_MUQDAM = '&amp;#1437;';</font>
+00281 <font class="comment"> my $GERSHAYIM = '&amp;#1438;';</font>
+00282 <font class="comment"> my $QARNEY_PARA = '&amp;#1439;';</font>
+00283 <font class="comment"> my $TELISHA_GEDOLA = '&amp;#1440;';</font>
+00284 <font class="comment"> my $PAZER = '&amp;#1441;';</font>
+00285 <font class="comment"> my $MUNAH = '&amp;#1443;';</font>
+00286 <font class="comment"> my $MAHAPAKH = '&amp;#1444;';</font>
+00287 <font class="comment"> my $MERKHA = '&amp;#1445;';</font>
+00288 <font class="comment"> my $MERKHA_KEFULA = '&amp;#1446;';</font>
+00289 <font class="comment"> my $DARGA = '&amp;#1447;';</font>
+00290 <font class="comment"> my $QADMA = '&amp;#1448;';</font>
+00291 <font class="comment"> my $TELISHA_QETANA = '&amp;#1449;';</font>
+00292 <font class="comment"> my $YERAH_BEN_YOMO = '&amp;#1450;';</font>
+00293 <font class="comment"> my $OLE = '&amp;#1451;';</font>
+00294 <font class="comment"> my $ILUY = '&amp;#1452;';</font>
+00295 <font class="comment"> my $DEHI = '&amp;#1453;';</font>
+00296 <font class="comment"> my $ZINOR = '&amp;#1454;';</font>
+00297 <font class="comment"># HEBREW MARK</font>
+00298 <font class="comment"> my $MASORA_CIRCLE = '&amp;#1455;';</font>
+00299 <font class="comment"># HEBREW EXTENDED-A points and punctuation</font>
+00300 <font class="comment"> my $SHEVA = '&amp;#1456;';</font>
+00301 <font class="comment"> my $HATAF_SEGOL = '&amp;#1457;';</font>
+00302 <font class="comment"> my $HATAF_PATAH = '&amp;#1458;';</font>
+00303 <font class="comment"> my $HATAF_QAMATS = '&amp;#1459;';</font>
+00304 <font class="comment"> my $HIRIQ = '&amp;#1460;';</font>
+00305 <font class="comment"> my $TSERE = '&amp;#1461;';</font>
+00306 <font class="comment"> my $SEGOL = '&amp;#1462;';</font>
+00307 <font class="comment"># furtive Patah is not a distinct character</font>
+00308 <font class="comment"> my $PATAH = '&amp;#1463;';</font>
+00309 <font class="comment"> my $QAMATS = '&amp;#1464;';</font>
+00310 <font class="comment"> my $HOLAM = '&amp;#1465;';</font>
+00311 <font class="comment"> my $QUBUTS = '&amp;#1467;';</font>
+00312 <font class="comment"># also used as shuruq</font>
+00313 <font class="comment"># falls within the base letter</font>
+00314 <font class="comment"> my $DAGESH_OR_MAPIQ = '&amp;#1468;';</font>
+00315 <font class="comment"># also used as siluq</font>
+00316 <font class="comment"> my $METAG = '&amp;#1469;';</font>
+00317 <font class="comment"> my $MAQAF = '&amp;#1470;';</font>
+00318 <font class="comment"> my $RAFE = '&amp;#1471;';</font>
+00319 <font class="comment"># Also used for legarmeh</font>
+00320 <font class="comment"># may be treated as spacing punctuation, not as a point</font>
+00321 <font class="comment"> my $PASEQ = '&amp;#1472;';</font>
+00322 <font class="comment"> my $SHIN_DOT = '&amp;#1473;';</font>
+00323 <font class="comment"> my $SIN_DOT = '&amp;#1474;';</font>
+00324 <font class="comment"> my $SOF_PASUQ = '&amp;#1475;';</font>
+00325 <font class="comment"># HEBREW MARK</font>
+00326 <font class="comment"> my $UPPER_DOT = '&amp;#1476;';</font>
+00327 <font class="comment"># HEBREW LETTERS based on ISO 8859-8</font>
+00328 <font class="comment"># aleph</font>
+00329 <font class="comment"># x (alef symbol - 2135)</font>
+00330 <font class="comment"> my $ALEF = '&amp;#1488;';</font>
+00331 <font class="comment"># x (bet symbol - 2136)</font>
+00332 <font class="comment"> my $BET = '&amp;#1489;';</font>
+00333 <font class="comment"># x (gimel symbol - 2137)</font>
+00334 <font class="comment"> my $GIMEL = '&amp;#1490;';</font>
+00335 <font class="comment"># x (dalet symbol - 2138)</font>
+00336 <font class="comment"> my $DALET = '&amp;#1491;';</font>
+00337 <font class="comment"> my $HE = '&amp;#1492;';</font>
+00338 <font class="comment"> my $VAV = '&amp;#1493;';</font>
+00339 <font class="comment"> my $ZAYIN = '&amp;#1494;';</font>
+00340 <font class="comment"> my $HET = '&amp;#1495;';</font>
+00341 <font class="comment"> my $TET = '&amp;#1496;';</font>
+00342 <font class="comment"> my $YOD = '&amp;#1497;';</font>
+00343 <font class="comment"> my $FINAL_KAF = '&amp;#1498;';</font>
+00344 <font class="comment"> my $KAF = '&amp;#1499;';</font>
+00345 <font class="comment"> my $LAMED = '&amp;#1500;';</font>
+00346 <font class="comment"> my $FINAL_MEM = '&amp;#1501;';</font>
+00347 <font class="comment"> my $MEM = '&amp;#1502;';</font>
+00348 <font class="comment"> my $FINAL_NUN = '&amp;#1503;';</font>
+00349 <font class="comment"> my $NUN = '&amp;#1504;';</font>
+00350 <font class="comment"> my $SAMEKH = '&amp;#1505;';</font>
+00351 <font class="comment"> my $AYIN = '&amp;#1506;';</font>
+00352 <font class="comment"> my $FINAL_PE = '&amp;#1507;';</font>
+00353 <font class="comment"> my $PE = '&amp;#1508;';</font>
+00354 <font class="comment"> my $FINAL_TSADI = '&amp;#1509;';</font>
+00355 <font class="comment"># also known as zade</font>
+00356 <font class="comment"> my $TSADI = '&amp;#1510;';</font>
+00357 <font class="comment"> my $QOF = '&amp;#1511;';</font>
+00358 <font class="comment"> my $RESH = '&amp;#1512;';</font>
+00359 <font class="comment"> my $SHIN = '&amp;#1513;';</font>
+00360 <font class="comment"> my $TAV = '&amp;#1514;';</font>
+00361 <font class="comment"># Yiddish digraphs</font>
+00362 <font class="comment"># Hebrew Ligature</font>
+00363 <font class="comment"># tsvey vovn</font>
+00364 <font class="comment"> my $DOUBLE_VAV = '&amp;#1520;';</font>
+00365 <font class="comment"> my $VAV_YOD = '&amp;#1521;';</font>
+00366 <font class="comment"># tsvey yudn</font>
+00367 <font class="comment"> my $DOUBLE_YOD = '&amp;#1522;';</font>
+00368 <font class="comment"></font>
+00369 <font class="comment"># Additional punctuation</font>
+00370 <font class="comment"> my $PUNCT_GERESH = '&amp;#1523;';</font>
+00371 <font class="comment"> my $PUNCT_GERSHAYIM = '&amp;#1524;';</font>
+00372 <font class="comment"># Reserved: 0x05F5"</font>
+00373 <font class="comment"># x (hebrew point judeo-spanish varika - FB1E)</font>
+00374 <font class="comment">#my $JUDEO_SPANISH_VARIKA = pack("U",0xFB1E); # UTF-8 OxFB1E</font>
+00375 <font class="comment"></font>
+00376 <font class="comment">#############################</font>
+00377 <font class="comment"># End of Unicode 2.0 Hebrew #</font>
+00378 <font class="comment">#############################</font>
+00379 <font class="comment"></font>
+00380 <font class="comment"># A hash whose key is a Michagan code, and whose value is a Unicode</font>
+00381 <font class="comment"># equvalent</font>
+00382 <font class="comment"></font>
+00383 <font class="comment"> char subst[] = new char [255];</font>
+00384 <font class="comment"> subst[')'] = 1488;</font>
+00385 <font class="comment"> 'B' =&gt; $BET,</font>
+00386 <font class="comment"> 'G' =&gt; $GIMEL,</font>
+00387 <font class="comment"> 'D' =&gt; $DALET,</font>
+00388 <font class="comment"> 'H' =&gt; $HE,</font>
+00389 <font class="comment"> 'W' =&gt; $VAV,</font>
+00390 <font class="comment"> 'Z' =&gt; $ZAYIN,</font>
+00391 <font class="comment"> 'X' =&gt; $HET,</font>
+00392 <font class="comment"> '+' =&gt; $TET,</font>
+00393 <font class="comment"> 'Y' =&gt; $YOD,</font>
+00394 <font class="comment"> 'K' =&gt; $KAF,</font>
+00395 <font class="comment"> 'L' =&gt; $LAMED,</font>
+00396 <font class="comment"> 'M' =&gt; $MEM,</font>
+00397 <font class="comment"> 'N' =&gt; $NUN,</font>
+00398 <font class="comment"> 'S' =&gt; $SAMEKH,</font>
+00399 <font class="comment"> '(' =&gt; $AYIN,</font>
+00400 <font class="comment"> 'P' =&gt; $PE,</font>
+00401 <font class="comment"> 'C' =&gt; $TSADI,</font>
+00402 <font class="comment"> 'Q' =&gt; $QOF,</font>
+00403 <font class="comment"> 'R' =&gt; $RESH,</font>
+00404 <font class="comment"> '#' =&gt; $SHIN, # the letter shin without a point</font>
+00405 <font class="comment"> '&amp;' =&gt; ($SHIN . $SIN_DOT),</font>
+00406 <font class="comment"> '$' =&gt; ($SHIN . $SHIN_DOT), # '</font>
+00407 <font class="comment"> 'T' =&gt; $TAV,</font>
+00408 <font class="comment"># VOWELS</font>
+00409 <font class="comment"> 'A' =&gt; $PATAH,</font>
+00410 <font class="comment"> 'F' =&gt; $QAMATS,</font>
+00411 <font class="comment"> 'E' =&gt; $SEGOL,</font>
+00412 <font class="comment"> '"' =&gt; $TSERE,</font>
+00413 <font class="comment"> 'I' =&gt; $HIRIQ,</font>
+00414 <font class="comment"> 'O' =&gt; $HOLAM,</font>
+00415 <font class="comment"> 'U' =&gt; $QUBUTS,</font>
+00416 <font class="comment"> ':' =&gt; $SHEVA,</font>
+00417 <font class="comment"> ':A' =&gt; $HATAF_PATAH,</font>
+00418 <font class="comment"> ':E' =&gt; $HATAF_SEGOL,</font>
+00419 <font class="comment"> ':F' =&gt; $HATAF_QAMATS,</font>
+00420 <font class="comment"># OTHER DIACRITICS</font>
+00421 <font class="comment"> '.' =&gt; $DAGESH_OR_MAPIQ,</font>
+00422 <font class="comment"> '-' =&gt; $MAQAF,</font>
+00423 <font class="comment"> ',' =&gt; $RAFE,</font>
+00424 <font class="comment"># CANTILLATION</font>
+00425 <font class="comment"> '00' =&gt; $SOF_PASUQ,</font>
+00426 <font class="comment"> '01' =&gt; $SEGOLTA,</font>
+00427 <font class="comment"># According to BHS, zarqa and sinnor are both postpositive. However,</font>
+00428 <font class="comment"># the Michigan encoding uses one code for both. The Unicode zarqa</font>
+00429 <font class="comment"># (0x0598) is definitely NOT postpositive. And further, the shape of</font>
+00430 <font class="comment"># the symbol is different in BHS and Uniocde. This needs further</font>
+00431 <font class="comment"># research to determine what's going on here. For now, we follow BHS</font>
+00432 <font class="comment"># and use the postpositive Unicode zinor or both accents.</font>
+00433 <font class="comment"> '02' =&gt; $ZINOR,</font>
+00434 <font class="comment"># Pashta is postpositive, and the Unicode equivalent reflects</font>
+00435 <font class="comment"># this. However, there is a poetic equivalent -- azla legarmeh --</font>
+00436 <font class="comment"># which is not postpositive, but no equivalent code point exists in</font>
+00437 <font class="comment"># Unicode. The Michigan encoding does not distinguish between the two,</font>
+00438 <font class="comment"># although it could be algorithmically determined.</font>
+00439 <font class="comment"> '03' =&gt; $PASHTA,</font>
+00440 <font class="comment"> '04' =&gt; $TELISHA_QETANA,</font>
+00441 <font class="comment"> '05' =&gt; $PASEQ,</font>
+00442 <font class="comment"> '10' =&gt; $YETIV,</font>
+00443 <font class="comment"># In the poetic books, prepositive dehi occurs; it's unclear whether</font>
+00444 <font class="comment"># tipeha also occurs in the poetic books. Otherwise, we could simply</font>
+00445 <font class="comment"># check for what book in the Tanach we are in. Michigan uses the same</font>
+00446 <font class="comment"># code for each.</font>
+00447 <font class="comment"> '13' =&gt; $TIPEHA, # also $DEHI</font>
+00448 <font class="comment"># This is the poetic accent mugrash, which also includes rebia, but is</font>
+00449 <font class="comment"># encoded separately as '81' in the Michigan text.</font>
+00450 <font class="comment"> '11' =&gt; $GERESH_MUQDAM,</font>
+00451 <font class="comment"> '14' =&gt; $TELISHA_GEDOLA,</font>
+00452 <font class="comment"># Telisha qetana is postpositive as in '04' above. However, Michigan</font>
+00453 <font class="comment"># code '24' is for a medial telisha. Graphically, there is no</font>
+00454 <font class="comment"># difference.</font>
+00455 <font class="comment"> '24' =&gt; $TELISHA_QETANA,</font>
+00456 <font class="comment"> '33' =&gt; $PASHTA,</font>
+00457 <font class="comment"># The Michigan code of telisha gedola in medial position. Graphically,</font>
+00458 <font class="comment"># there is no difference.</font>
+00459 <font class="comment"> '44' =&gt; $TELISHA_GEDOLA,</font>
+00460 <font class="comment"> '60' =&gt; $OLE,</font>
+00461 <font class="comment"> '61' =&gt; $GERESH,</font>
+00462 <font class="comment"># This is the Unicode Hebrew *accent*; there is also another Hebrew</font>
+00463 <font class="comment"># *punctuation* called GERSHAYIM 0x05F4. I'm using the more</font>
+00464 <font class="comment"># traditional rounded marks, rather than the alternate straight</font>
+00465 <font class="comment"># marks.</font>
+00466 <font class="comment"> '62' =&gt; $GERSHAYIM,</font>
+00467 <font class="comment"># Also known as azla</font>
+00468 <font class="comment"> '63' =&gt; $QADMA,</font>
+00469 <font class="comment"> '64' =&gt; $ILUY,</font>
+00470 <font class="comment"> '65' =&gt; $SHALSHELET,</font>
+00471 <font class="comment"> '80' =&gt; $ZAQEF_QATAN,</font>
+00472 <font class="comment"> '81' =&gt; $REVIA,</font>
+00473 <font class="comment"># Note, this accent is actually sinnorit, but it does not exist as a</font>
+00474 <font class="comment"># separate glyph in the Unicode standard. The 'ZINOR' Unicode accent</font>
+00475 <font class="comment"># is postpositive, while sinnorit is not. ZARQA is as close as I can</font>
+00476 <font class="comment"># get to this.</font>
+00477 <font class="comment"> '82' =&gt; $ZARQA,</font>
+00478 <font class="comment"># The Unicode form does not match the form used by BHS, but the names</font>
+00479 <font class="comment"># are the same.</font>
+00480 <font class="comment"> '83' =&gt; $PAZER,</font>
+00481 <font class="comment"> '84' =&gt; $QARNEY_PARA,</font>
+00482 <font class="comment"> '85' =&gt; $ZAQEF_GADOL,</font>
+00483 <font class="comment"># Note Michigan encoding distinguishes between medial metheg '35' (occuring</font>
+00484 <font class="comment"># on the left of the vowel), and the ordinary meteg '95' (occuring on the</font>
+00485 <font class="comment"># right of the vowel). It is also used for silluq.</font>
+00486 <font class="comment"> '35' =&gt; $METAG,</font>
+00487 <font class="comment"> '70' =&gt; $MAHAPAKH,</font>
+00488 <font class="comment"> '71' =&gt; $MERKHA,</font>
+00489 <font class="comment"> '72' =&gt; $MERKHA_KEFULA,</font>
+00490 <font class="comment"> '73' =&gt; $TIPEHA, # also '13', '73' also is used for majela</font>
+00491 <font class="comment"> '74' =&gt; $MUNAH,</font>
+00492 <font class="comment"> '75' =&gt; $METAG, # this is silluq; should appear to the left of the vowel</font>
+00493 <font class="comment"> '91' =&gt; $TEVIR,</font>
+00494 <font class="comment"> '92' =&gt; $ETNAHTA,</font>
+00495 <font class="comment"> '93' =&gt; $YERAH_BEN_YOMO,</font>
+00496 <font class="comment"> '94' =&gt; $DARGA,</font>
+00497 <font class="comment"> '95' =&gt; $METAG, # should appear to the right of the vowel</font>
+00498 <font class="comment"></font>
+00499 <font class="comment"># Not used by the Michigan Encoding</font>
+00500 <font class="comment"># $UPPER_DOT = '05C4';</font>
+00501 <font class="comment"> );</font>
+00502 <font class="comment"></font>
+00503 <font class="comment"># declare other variables</font>
+00504 <font class="comment"> my (@bhsLines,</font>
+00505 <font class="comment"> @bhsVerse,</font>
+00506 <font class="comment"> @entity_line) = ();</font>
+00507 <font class="comment"></font>
+00508 <font class="comment"> my ($i,</font>
+00509 <font class="comment"> $verse,</font>
+00510 <font class="comment"> $word,</font>
+00511 <font class="comment"> $character) = 0;</font>
+00512 <font class="comment"></font>
+00513 <font class="comment"> my ($element,</font>
+00514 <font class="comment"> $saveGuttural) = "";</font>
+00515 <font class="comment"></font>
+00516 <font class="comment"># read in a line</font>
+00517 <font class="comment"> while (&lt;&gt;) {</font>
+00518 <font class="comment"># Process one verse</font>
+00519 <font class="comment"># iterate over every character and change to XML decimal entity</font>
+00520 <font class="comment"> CHAR: for ( $i = 0; ($i &lt; scalar(@bhsVerse)); $i++) {</font>
+00521 <font class="comment"> # find and convert final kaf, mem, nun, pe, tsade</font>
+00522 <font class="comment"> ( # if final form</font>
+00523 <font class="comment"> $bhsVerse[$i] =~ /[KMNPC]/</font>
+00524 <font class="comment"> )</font>
+00525 <font class="comment"> &amp;&amp;</font>
+00526 <font class="comment"> (</font>
+00527 <font class="comment"> ( # whitespace or</font>
+00528 <font class="comment"> $bhsVerse[$i+1] =~ /[ \-?]/</font>
+00529 <font class="comment"> )</font>
+00530 <font class="comment"> ||</font>
+00531 <font class="comment"> ( # EOL or</font>
+00532 <font class="comment"> $i == ( scalar(@bhsVerse) - 1 )</font>
+00533 <font class="comment"> )</font>
+00534 <font class="comment"> ||</font>
+00535 <font class="comment"> ( # sof pasuq or</font>
+00536 <font class="comment"> ( $bhsVerse[$i+1] =~ /0/ ) &amp;&amp;</font>
+00537 <font class="comment"> ( $bhsVerse[$i+2] =~ /0/ )</font>
+00538 <font class="comment"> )</font>
+00539 <font class="comment"> ||</font>
+00540 <font class="comment"> ( # one accent followed by white, eol or</font>
+00541 <font class="comment"> (</font>
+00542 <font class="comment"> ( $bhsVerse[$i+1] =~ /\d/ ) &amp;&amp;</font>
+00543 <font class="comment"> ( $bhsVerse[$i+2] =~ /\d/ )</font>
+00544 <font class="comment"> ) &amp;&amp;</font>
+00545 <font class="comment"> (</font>
+00546 <font class="comment"> ( $bhsVerse[$i+3] =~ /[ \-?]/ ) ||</font>
+00547 <font class="comment"> ( $i == ( scalar(@bhsVerse) - 1 ) )</font>
+00548 <font class="comment"> )</font>
+00549 <font class="comment"> )</font>
+00550 <font class="comment"> ||</font>
+00551 <font class="comment"> ( # two accents followed by white, eol</font>
+00552 <font class="comment"> (</font>
+00553 <font class="comment"> ( $bhsVerse[$i+1] =~ /\d/ ) &amp;&amp;</font>
+00554 <font class="comment"> ( $bhsVerse[$i+2] =~ /\d/ ) &amp;&amp;</font>
+00555 <font class="comment"> ( $bhsVerse[$i+3] =~ /\d/ ) &amp;&amp;</font>
+00556 <font class="comment"> ( $bhsVerse[$i+4] =~ /\d/ )</font>
+00557 <font class="comment"> ) &amp;&amp;</font>
+00558 <font class="comment"> (</font>
+00559 <font class="comment"> ( $bhsVerse[$i+5] =~ /[ \-?]/ ) ||</font>
+00560 <font class="comment"> ( $i == ( scalar(@bhsVerse) - 1 ) )</font>
+00561 <font class="comment"> )</font>
+00562 <font class="comment"> )</font>
+00563 <font class="comment"> ||</font>
+00564 <font class="comment"> ( # followed by a vowel and white, eol, sof pasuq</font>
+00565 <font class="comment"> ( $bhsVerse[$i+1] =~ /[:F]/ ) &amp;&amp;</font>
+00566 <font class="comment"> ( # followed by</font>
+00567 <font class="comment"> ( $bhsVerse[$i+2] =~ /[ \-?]/ ) || # whitespace or</font>
+00568 <font class="comment"> ( $i == ( scalar(@bhsVerse) - 1 ) ) || # eol or</font>
+00569 <font class="comment"> ( # sof pasuq</font>
+00570 <font class="comment"> ( $bhsVerse[$i+2] =~ /0/ ) &amp;&amp;</font>
+00571 <font class="comment"> ( $bhsVerse[$i+3] =~ /0/ )</font>
+00572 <font class="comment"> )</font>
+00573 <font class="comment"> )</font>
+00574 <font class="comment"> )</font>
+00575 <font class="comment"> ) # end of what follows after final letter</font>
+00576 <font class="comment"> &amp;&amp;</font>
+00577 <font class="comment"> do {</font>
+00578 <font class="comment"> $bhsVerse[$i] =~ /K/ &amp;&amp; eval { push @entity_line,$FINAL_KAF; }</font>
+00579 <font class="comment"> &amp;&amp; next CHAR;</font>
+00580 <font class="comment"> $bhsVerse[$i] =~ /M/ &amp;&amp; eval { push @entity_line,$FINAL_MEM; }</font>
+00581 <font class="comment"> &amp;&amp; next CHAR;</font>
+00582 <font class="comment"> $bhsVerse[$i] =~ /N/ &amp;&amp; eval { push @entity_line,$FINAL_NUN; }</font>
+00583 <font class="comment"> &amp;&amp; next CHAR;</font>
+00584 <font class="comment"> $bhsVerse[$i] =~ /P/ &amp;&amp; eval { push @entity_line,$FINAL_PE; }</font>
+00585 <font class="comment"> &amp;&amp; next CHAR;</font>
+00586 <font class="comment"> $bhsVerse[$i] =~ /C/ &amp;&amp; eval { push @entity_line,$FINAL_TSADI; }</font>
+00587 <font class="comment"> &amp;&amp; next CHAR;</font>
+00588 <font class="comment"> };</font>
+00589 <font class="comment"> # find and convert "furtive patach"</font>
+00590 <font class="comment"> ( $bhsVerse[$i] =~ /A/ ) &amp;&amp; # If the letter is a patach</font>
+00591 <font class="comment"> ( $bhsVerse[$i-1] =~ /[)HX(]/ ) &amp;&amp; # and is preceeded by a guttural</font>
+00592 <font class="comment"> ( ( $bhsVerse[$i-2] =~ /[AEFOU]/ ) || # and is preceeded by a vowel</font>
+00593 <font class="comment"> ( ( $bhsVerse[$i-2] =~ /\./ ) &amp;&amp; # or by suruq</font>
+00594 <font class="comment"> ( $bhsVerse[$i-3] =~ /W/ ) ) || #</font>
+00595 <font class="comment"> ( ( $bhsVerse[$i-2] =~ /W/ ) &amp;&amp; # or by holem (written plene)</font>
+00596 <font class="comment"> ( $bhsVerse[$i-3] =~ /O/ ) ) || #</font>
+00597 <font class="comment"> ( ( $bhsVerse[$i-2] =~ /Y/ ) &amp;&amp; # or by hiriq-yod</font>
+00598 <font class="comment"> ( $bhsVerse[$i-3] =~ /I/ ) ) ) &amp;&amp;</font>
+00599 <font class="comment"> do {</font>
+00600 <font class="comment"> $saveGuttural = pop @entity_line; # snip off the gutteral</font>
+00601 <font class="comment"> push @entity_line,$PATAH; # push on the patach</font>
+00602 <font class="comment"> push @entity_line,$saveGuttural; # push back on the gutteral</font>
+00603 <font class="comment"> next CHAR;</font>
+00604 <font class="comment"> };</font>
+00605 <font class="comment"> # convert cantillation</font>
+00606 <font class="comment"> # since we have previously dealt with all other cases of</font>
+00607 <font class="comment"> # numbers, two digit patterns are all we have to search for</font>
+00608 <font class="comment"> $bhsVerse[$i] =~ /\d/ &amp;&amp; $bhsVerse[$i+1] =~ /\d/ &amp;&amp; do {</font>
+00609 <font class="comment"> push @entity_line,$Michigan2XMLentity{"$bhsVerse[$i]$bhsVerse[$i+1]"};</font>
+00610 <font class="comment"> $i++; # accents are two digits long, so advance past the 2nd digit</font>
+00611 <font class="comment"> next CHAR;</font>
+00612 <font class="comment"> };</font>
+00613 <font class="comment"> # convert katef vowels, which are two characters long</font>
+00614 <font class="comment"> $bhsVerse[$i] =~ /:/ &amp;&amp; $bhsVerse[$i+1] =~ /[AEF]/ &amp;&amp; do {</font>
+00615 <font class="comment"> push @entity_line,$Michigan2XMLentity{"$bhsVerse[$i]$bhsVerse[$i+1]"};</font>
+00616 <font class="comment"> $i++;</font>
+00617 <font class="comment"> next CHAR;</font>
+00618 <font class="comment"> };</font>
+00619 <font class="comment"> # convert everything else</font>
+00620 <font class="comment"> push @entity_line,$Michigan2XMLentity{"$bhsVerse[$i]"};</font>
+00621 <font class="comment"> } # end CHAR</font>
+00622 <font class="comment"># print the line to standard output with XML character-level encoding</font>
+00623 <font class="comment"># each character has the following format:</font>
+00624 <font class="comment"># &lt;c id="1kg1.verse#.word#.character#"&gt;&amp;#1234;&lt;/c&gt;</font>
+00625 <font class="comment"></font>
+00626 <font class="comment"># set up the verse element</font>
+00627 <font class="comment"> $word = 1;</font>
+00628 <font class="comment"> $character = 1;</font>
+00629 <font class="comment"> print "&lt;verse&gt;\n&lt;word&gt;\n";</font>
+00630 <font class="comment"># print each character element</font>
+00631 <font class="comment"># if there is a space, then close the word entity, open a new word</font>
+00632 <font class="comment"># entity, increment the word number, reset the character number to</font>
+00633 <font class="comment"># zero.</font>
+00634 <font class="comment"> foreach $element (@entity_line) {</font>
+00635 <font class="comment"> if ( $element =~ " " ) {</font>
+00636 <font class="comment"> $word++;</font>
+00637 <font class="comment"> $character = 1;</font>
+00638 <font class="comment"> print "&lt;/word&gt;\n&lt;word&gt;\n";</font>
+00639 <font class="comment"> next;</font>
+00640 <font class="comment"> }</font>
+00641 <font class="comment"> print "&lt;c id=\"1kg1.$verse.$word.$character\"&gt;$element&lt;/c&gt;\n";</font>
+00642 <font class="comment"> $character++;</font>
+00643 <font class="comment"> }</font>
+00644 <font class="comment"># close the verse element</font>
+00645 <font class="comment"> print "&lt;/word&gt;&lt;/verse&gt;\n";</font>
+00646 <font class="comment"># reinitialize variables</font>
+00647 <font class="comment"> @bhsVerse = ();</font>
+00648 <font class="comment"> @entity_line = ();</font>
+00649 <font class="comment"> @bhsLines = ();</font>
+00650 <font class="comment"> } # end while</font>
+00651 <font class="comment"># close the XML document</font>
+00652 <font class="comment"> print "&lt;/body&gt;\n";</font>
+00653 <font class="comment"> */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/hebrewmcim_8h-source.html b/doc/api-documentation/html/hebrewmcim_8h-source.html
new file mode 100644
index 0000000..650c5cd
--- /dev/null
+++ b/doc/api-documentation/html/hebrewmcim_8h-source.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>hebrewmcim.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>hebrewmcim.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef HEBREWMCIM_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define HEBREWMCIM_H</font>
+00003 <font class="preprocessor"></font>
+00013 <font class="preprocessor">#include &lt;swinputmeth.h&gt;</font>
+00014 <font class="preprocessor">#include &lt;map&gt;</font>
+00015 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00016
+00017 <font class="keyword">class </font>HebrewMCIM : <font class="keyword">public</font> <a class="code" href="class_s_w_input_method.html">SWInputMethod</a> {
+00018
+00019 <font class="keywordtype">void</font> init();
+00020 <font class="keywordtype">int</font> subst[255];
+00021 map&lt;int, int&gt; subst2[12];
+00022 map&lt;int, int*&gt; multiChars;
+00023
+00024 <font class="keyword">public</font>:
+00025 HebrewMCIM();
+00026 <font class="keywordtype">int</font> *translate(<font class="keywordtype">char</font> in);
+00027 };
+00028
+00029 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/hierarchy.html b/doc/api-documentation/html/hierarchy.html
new file mode 100644
index 0000000..806c262
--- /dev/null
+++ b/doc/api-documentation/html/hierarchy.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Hierarchical Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project Class Hierarchy</h1><a href="inherits.html">Go to the graphical class hierarchy</a>
+<p>
+This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>
+<ul>
+<li><a class="el" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>
+</ul>
+<li><a class="el" href="class_g_b_f_footnotes.html">GBFFootnotes</a>
+<li><a class="el" href="class_g_b_f_headings.html">GBFHeadings</a>
+<li><a class="el" href="class_g_b_f_h_t_m_l.html">GBFHTML</a>
+<li><a class="el" href="class_g_b_f_morph.html">GBFMorph</a>
+<li><a class="el" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>
+<li><a class="el" href="class_g_b_f_plain.html">GBFPlain</a>
+<li><a class="el" href="class_g_b_f_r_t_f.html">GBFRTF</a>
+<li><a class="el" href="class_g_b_f_strongs.html">GBFStrongs</a>
+<li><a class="el" href="class_g_b_f_th_m_l.html">GBFThML</a>
+<li><a class="el" href="class_greek_lex_attribs.html">GreekLexAttribs</a>
+<li><a class="el" href="class_latin1_u_t_f16.html">Latin1UTF16</a>
+<li><a class="el" href="class_latin1_u_t_f8.html">Latin1UTF8</a>
+<li><a class="el" href="class_locale_mgr.html">LocaleMgr</a>
+<li><a class="el" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>
+<li><a class="el" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a>
+<li><a class="el" href="class_r_t_f_h_t_m_l.html">RTFHTML</a>
+<li><a class="el" href="class_r_w_p_h_t_m_l.html">RWPHTML</a>
+<li><a class="el" href="class_r_w_p_r_t_f.html">RWPRTF</a>
+<li><a class="el" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>
+<li><a class="el" href="class_s_w_basic_filter.html">SWBasicFilter</a>
+<ul>
+<li><a class="el" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a>
+<li><a class="el" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a>
+<li><a class="el" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a>
+<li><a class="el" href="class_th_m_l_r_t_f.html">ThMLRTF</a>
+</ul>
+<li><a class="el" href="class_s_w_class.html">SWClass</a>
+<li><a class="el" href="class_s_w_config.html">SWConfig</a>
+<li><a class="el" href="class_s_w_input_method.html">SWInputMethod</a>
+<li><a class="el" href="class_s_w_locale.html">SWLocale</a>
+<li><a class="el" href="class_s_w_mgr.html">SWMgr</a>
+<li><a class="el" href="class_s_w_module.html">SWModule</a>
+<ul>
+<li><a class="el" href="class_s_w_com.html">SWCom</a>
+<li><a class="el" href="class_s_w_gen_book.html">SWGenBook</a>
+<li><a class="el" href="class_s_w_l_d.html">SWLD</a>
+<li><a class="el" href="class_s_w_text.html">SWText</a>
+</ul>
+<li><a class="el" href="class_s_w_object.html">SWObject</a>
+<ul>
+<li><a class="el" href="class_s_w_display.html">SWDisplay</a>
+<li><a class="el" href="class_s_w_key.html">SWKey</a>
+<ul>
+<li><a class="el" href="class_list_key.html">ListKey</a>
+<li><a class="el" href="class_str_key.html">StrKey</a>
+<li><a class="el" href="class_tree_key.html">TreeKey</a>
+<ul>
+<li><a class="el" href="class_tree_key_idx.html">TreeKeyIdx</a>
+</ul>
+<li><a class="el" href="class_verse_key.html">VerseKey</a>
+</ul>
+</ul>
+<li><a class="el" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>
+<li><a class="el" href="class_th_m_l_g_b_f.html">ThMLGBF</a>
+<li><a class="el" href="class_th_m_l_headings.html">ThMLHeadings</a>
+<li><a class="el" href="class_th_m_l_lemma.html">ThMLLemma</a>
+<li><a class="el" href="class_th_m_l_morph.html">ThMLMorph</a>
+<li><a class="el" href="class_th_m_l_o_l_b.html">ThMLOLB</a>
+<li><a class="el" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>
+<li><a class="el" href="class_th_m_l_plain.html">ThMLPlain</a>
+<li><a class="el" href="class_th_m_l_scripref.html">ThMLScripref</a>
+<li><a class="el" href="class_th_m_l_strongs.html">ThMLStrongs</a>
+<li><a class="el" href="class_th_m_l_variants.html">ThMLVariants</a>
+<li><a class="el" href="class_unicode_r_t_f.html">UnicodeRTF</a>
+<li><a class="el" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a>
+<li><a class="el" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>
+<li><a class="el" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>
+<li><a class="el" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>
+<li><a class="el" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>
+<li><a class="el" href="class_u_t_f8_latin1.html">UTF8Latin1</a>
+<li><a class="el" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>
+</ul>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/hrefcom_8cpp-source.html b/doc/api-documentation/html/hrefcom_8cpp-source.html
new file mode 100644
index 0000000..50e8c16
--- /dev/null
+++ b/doc/api-documentation/html/hrefcom_8cpp-source.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>hrefcom.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>hrefcom.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * hrefcom.cpp - code for class 'HREFCom'- a module that produces HTML HREFs</font>
+00003 <font class="comment"> * pointing to actual text desired. Uses standard</font>
+00004 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifndef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00014 <font class="preprocessor">#else</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00016 <font class="preprocessor">#endif</font>
+00017 <font class="preprocessor"></font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;hrefcom.h&gt;</font>
+00022
+00023
+00024 <font class="comment">/******************************************************************************</font>
+00025 <font class="comment"> * HREFCom Constructor - Initializes data for instance of HREFCom</font>
+00026 <font class="comment"> *</font>
+00027 <font class="comment"> * ENT: iname - Internal name for module</font>
+00028 <font class="comment"> * iprefix - string to prepend to each HREF (e.g. "file://mods/com/jfb/")</font>
+00029 <font class="comment"> * idesc - Name to display to user for module</font>
+00030 <font class="comment"> * idisp - Display object to use for displaying</font>
+00031 <font class="comment"> */</font>
+00032
+00033 HREFCom::HREFCom(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iprefix, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp) : RawVerse(ipath), <a class="code" href="class_s_w_com.html">SWCom</a>(iname, idesc, idisp)
+00034 {
+00035 prefix = 0;
+00036 stdstr(&amp;prefix, iprefix);
+00037 }
+00038
+00039
+00040 <font class="comment">/******************************************************************************</font>
+00041 <font class="comment"> * HREFCom Destructor - Cleans up instance of HREFCom</font>
+00042 <font class="comment"> */</font>
+00043
+00044 HREFCom::~HREFCom()
+00045 {
+00046 <font class="keywordflow">if</font> (prefix)
+00047 <font class="keyword">delete</font> [] prefix;
+00048 }
+00049
+00050
+00051 <font class="comment">/******************************************************************************</font>
+00052 <font class="comment"> * HREFCom::operator char * - Returns the correct verse when char * cast</font>
+00053 <font class="comment"> * is requested</font>
+00054 <font class="comment"> *</font>
+00055 <font class="comment"> * RET: string buffer with verse</font>
+00056 <font class="comment"> */</font>
+00057
+00058 <font class="keywordtype">char</font> *HREFCom::getRawEntry() {
+00059 <font class="keywordtype">long</font> start;
+00060 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00061 <font class="keywordtype">char</font> *tmpbuf;
+00062 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00063
+00064 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00065 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00066 <font class="preprocessor">#endif</font>
+00067 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00068 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00069 <font class="preprocessor"></font> }
+00070 <font class="keywordflow">catch</font> ( ... ) {}
+00071 <font class="preprocessor">#endif</font>
+00072 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00073 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00074
+00075 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00076 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00077
+00078 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> newsize = ((size + 2) + strlen(prefix)) * FILTERPAD;
+00079 <font class="keywordflow">if</font> (newsize &gt; entrybufallocsize) {
+00080 <font class="keywordflow">if</font> (entrybuf)
+00081 <font class="keyword">delete</font> [] entrybuf;
+00082 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ newsize ];
+00083 entrybufallocsize = newsize;
+00084 }
+00085 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size + 10 ];
+00086
+00087 gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, size + 2, tmpbuf);
+00088 sprintf(entrybuf, <font class="stringliteral">"%s%s"</font>, prefix, tmpbuf);
+00089 preptext(entrybuf);
+00090
+00091 <font class="keyword">delete</font> [] tmpbuf;
+00092
+00093 <font class="keywordflow">if</font> (key != this-&gt;key)
+00094 <font class="keyword">delete</font> key;
+00095
+00096 <font class="keywordflow">return</font> entrybuf;
+00097 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/hrefcom_8h-source.html b/doc/api-documentation/html/hrefcom_8h-source.html
new file mode 100644
index 0000000..8e5c400
--- /dev/null
+++ b/doc/api-documentation/html/hrefcom_8h-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>hrefcom.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>hrefcom.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * hrefcom.h - code for class 'HREFCom'- a module that produces HTML HREFs</font>
+00003 <font class="comment"> * pointing to actual text desired. Uses standard</font>
+00004 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * $Id: hrefcom_8h-source.html,v 1.7 2002/06/20 20:23:08 mgruner Exp $</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00009 <font class="comment"> * CrossWire Bible Society</font>
+00010 <font class="comment"> * P. O. Box 2528</font>
+00011 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00014 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00015 <font class="comment"> * Free Software Foundation version 2.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00018 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00019 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00020 <font class="comment"> * General Public License for more details.</font>
+00021 <font class="comment"> *</font>
+00022 <font class="comment"> */</font>
+00023
+00024 <font class="preprocessor">#ifndef HREFCOM_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define HREFCOM_H</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swcom.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT HREFCom:<font class="keyword">public</font> RawVerse, <font class="keyword">public</font> <a class="code" href="class_s_w_com.html">SWCom</a>
+00033 {
+00034 <font class="keywordtype">char</font> *prefix;
+00035
+00036 <font class="keyword">public</font>:
+00037
+00038
+00039 HREFCom (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *prefix, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname =
+00040 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0);
+00041 <font class="keyword">virtual</font> ~ HREFCom ();
+00042 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a> ();
+00043 };
+00044
+00045
+00046 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/index.html b/doc/api-documentation/html/index.html
new file mode 100644
index 0000000..a39bf85
--- /dev/null
+++ b/doc/api-documentation/html/index.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>The Sword Project 1.5.3 - API documentation</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project 1.5.3 - API documentation</h1>
+<p>
+<h3 align="center">1.5.3</h3> This is the API documentation of the Sword project. it describes the structure of the Sword library and documents the functions of the classes. From time to time this documentation gives programming examples, too.
+<p>
+Sword provides an interface to different modules (Bibles/Commentaries/Lexicons) on disk. The object to work directly with the modules is <a class="el" href="class_s_w_module.html">SWModule</a>. Use the class <a class="el" href="class_s_w_mgr.html">SWMgr</a> to manage the modules.
+<p>
+If you want to write your own frontend for Sword please have a look at the already existing ones. Well knwon frontends are:<br>
+ -BibleCS for Windows (the sourcecode is availble in the CVS of crosswire.org)<br>
+ -GnomeSword (<a href="http://gnomesword.sourceforge.net/">http://gnomesword.sourceforge.net/</a>)<br>
+ -BibleTime (<a href="http://www.bibletime.de/">http://www.bibletime.de/</a>)<br>
+
+<p>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:12:58 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/infblock_8h-source.html b/doc/api-documentation/html/infblock_8h-source.html
new file mode 100644
index 0000000..1cbd10c
--- /dev/null
+++ b/doc/api-documentation/html/infblock_8h-source.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>infblock.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>infblock.h</h1><div class="fragment"><pre>00001 <font class="comment">/* infblock.h -- header to use infblock.c</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Mark Adler</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h </font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00007 <font class="comment"> part of the implementation of the compression library and is</font>
+00008 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00009 <font class="comment"> */</font>
+00010
+00011 <font class="keyword">struct </font>inflate_blocks_state;
+00012 <font class="keyword">typedef</font> <font class="keyword">struct </font>inflate_blocks_state FAR inflate_blocks_statef;
+00013
+00014 <font class="keyword">extern</font> inflate_blocks_statef * inflate_blocks_new OF((
+00015 z_streamp z,
+00016 check_func c, <font class="comment">/* check function */</font>
+00017 uInt w)); <font class="comment">/* window size */</font>
+00018
+00019 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_blocks OF((
+00020 inflate_blocks_statef *,
+00021 z_streamp ,
+00022 <font class="keywordtype">int</font>)); <font class="comment">/* initial return code */</font>
+00023
+00024 <font class="keyword">extern</font> <font class="keywordtype">void</font> inflate_blocks_reset OF((
+00025 inflate_blocks_statef *,
+00026 z_streamp ,
+00027 uLongf *)); <font class="comment">/* check value on output */</font>
+00028
+00029 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_blocks_free OF((
+00030 inflate_blocks_statef *,
+00031 z_streamp));
+00032
+00033 <font class="keyword">extern</font> <font class="keywordtype">void</font> inflate_set_dictionary OF((
+00034 inflate_blocks_statef *s,
+00035 <font class="keyword">const</font> Bytef *d, <font class="comment">/* dictionary */</font>
+00036 uInt n)); <font class="comment">/* dictionary length */</font>
+00037
+00038 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_blocks_sync_point OF((
+00039 inflate_blocks_statef *s));
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/infcodes_8h-source.html b/doc/api-documentation/html/infcodes_8h-source.html
new file mode 100644
index 0000000..ab80a04
--- /dev/null
+++ b/doc/api-documentation/html/infcodes_8h-source.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>infcodes.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>infcodes.h</h1><div class="fragment"><pre>00001 <font class="comment">/* infcodes.h -- header to use infcodes.c</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Mark Adler</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h </font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00007 <font class="comment"> part of the implementation of the compression library and is</font>
+00008 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00009 <font class="comment"> */</font>
+00010
+00011 <font class="keyword">struct </font>inflate_codes_state;
+00012 <font class="keyword">typedef</font> <font class="keyword">struct </font>inflate_codes_state FAR inflate_codes_statef;
+00013
+00014 <font class="keyword">extern</font> inflate_codes_statef *inflate_codes_new OF((
+00015 uInt, uInt,
+00016 inflate_huft *, inflate_huft *,
+00017 z_streamp ));
+00018
+00019 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_codes OF((
+00020 inflate_blocks_statef *,
+00021 z_streamp ,
+00022 <font class="keywordtype">int</font>));
+00023
+00024 <font class="keyword">extern</font> <font class="keywordtype">void</font> inflate_codes_free OF((
+00025 inflate_codes_statef *,
+00026 z_streamp ));
+00027
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/inffast_8h-source.html b/doc/api-documentation/html/inffast_8h-source.html
new file mode 100644
index 0000000..a4772b2
--- /dev/null
+++ b/doc/api-documentation/html/inffast_8h-source.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>inffast.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>inffast.h</h1><div class="fragment"><pre>00001 <font class="comment">/* inffast.h -- header to use inffast.c</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Mark Adler</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h </font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00007 <font class="comment"> part of the implementation of the compression library and is</font>
+00008 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00009 <font class="comment"> */</font>
+00010
+00011 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_fast OF((
+00012 uInt,
+00013 uInt,
+00014 inflate_huft *,
+00015 inflate_huft *,
+00016 inflate_blocks_statef *,
+00017 z_streamp ));
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/inffixed_8h-source.html b/doc/api-documentation/html/inffixed_8h-source.html
new file mode 100644
index 0000000..22b82c1
--- /dev/null
+++ b/doc/api-documentation/html/inffixed_8h-source.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>inffixed.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>inffixed.h</h1><div class="fragment"><pre>00001 <font class="comment">/* inffixed.h -- table for decoding fixed codes</font>
+00002 <font class="comment"> * Generated automatically by the maketree.c program</font>
+00003 <font class="comment"> */</font>
+00004
+00005 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00006 <font class="comment"> part of the implementation of the compression library and is</font>
+00007 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00008 <font class="comment"> */</font>
+00009
+00010 local uInt fixed_bl = 9;
+00011 local uInt fixed_bd = 5;
+00012 local inflate_huft fixed_tl[] = {
+00013 {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
+00014 {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},192},
+00015 {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},160},
+00016 {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},224},
+00017 {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},144},
+00018 {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},208},
+00019 {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},176},
+00020 {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},240},
+00021 {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
+00022 {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},200},
+00023 {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},168},
+00024 {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},232},
+00025 {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},152},
+00026 {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},216},
+00027 {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},184},
+00028 {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},248},
+00029 {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
+00030 {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},196},
+00031 {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},164},
+00032 {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},228},
+00033 {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},148},
+00034 {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},212},
+00035 {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},180},
+00036 {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},244},
+00037 {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
+00038 {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},204},
+00039 {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},172},
+00040 {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},236},
+00041 {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},156},
+00042 {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},220},
+00043 {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},188},
+00044 {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},252},
+00045 {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
+00046 {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},194},
+00047 {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},162},
+00048 {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},226},
+00049 {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},146},
+00050 {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},210},
+00051 {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},178},
+00052 {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},242},
+00053 {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
+00054 {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},202},
+00055 {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},170},
+00056 {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},234},
+00057 {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},154},
+00058 {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},218},
+00059 {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},186},
+00060 {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},250},
+00061 {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
+00062 {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},198},
+00063 {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},166},
+00064 {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},230},
+00065 {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},150},
+00066 {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},214},
+00067 {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},182},
+00068 {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},246},
+00069 {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
+00070 {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},206},
+00071 {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},174},
+00072 {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},238},
+00073 {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},158},
+00074 {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},222},
+00075 {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},190},
+00076 {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},254},
+00077 {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
+00078 {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},193},
+00079 {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},161},
+00080 {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},225},
+00081 {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},145},
+00082 {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},209},
+00083 {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},177},
+00084 {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},241},
+00085 {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
+00086 {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},201},
+00087 {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},169},
+00088 {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},233},
+00089 {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},153},
+00090 {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},217},
+00091 {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},185},
+00092 {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},249},
+00093 {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
+00094 {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},197},
+00095 {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},165},
+00096 {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},229},
+00097 {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},149},
+00098 {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},213},
+00099 {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},181},
+00100 {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},245},
+00101 {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
+00102 {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},205},
+00103 {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},173},
+00104 {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},237},
+00105 {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},157},
+00106 {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},221},
+00107 {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},189},
+00108 {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},253},
+00109 {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
+00110 {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},195},
+00111 {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},163},
+00112 {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},227},
+00113 {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},147},
+00114 {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},211},
+00115 {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},179},
+00116 {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},243},
+00117 {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
+00118 {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},203},
+00119 {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},171},
+00120 {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},235},
+00121 {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},155},
+00122 {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},219},
+00123 {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},187},
+00124 {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},251},
+00125 {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
+00126 {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},199},
+00127 {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},167},
+00128 {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},231},
+00129 {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},151},
+00130 {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},215},
+00131 {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},183},
+00132 {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},247},
+00133 {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
+00134 {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},207},
+00135 {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},175},
+00136 {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},239},
+00137 {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},159},
+00138 {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},223},
+00139 {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},191},
+00140 {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},255}
+00141 };
+00142 local inflate_huft fixed_td[] = {
+00143 {{{80,5}},1}, {{{87,5}},257}, {{{83,5}},17}, {{{91,5}},4097},
+00144 {{{81,5}},5}, {{{89,5}},1025}, {{{85,5}},65}, {{{93,5}},16385},
+00145 {{{80,5}},3}, {{{88,5}},513}, {{{84,5}},33}, {{{92,5}},8193},
+00146 {{{82,5}},9}, {{{90,5}},2049}, {{{86,5}},129}, {{{192,5}},24577},
+00147 {{{80,5}},2}, {{{87,5}},385}, {{{83,5}},25}, {{{91,5}},6145},
+00148 {{{81,5}},7}, {{{89,5}},1537}, {{{85,5}},97}, {{{93,5}},24577},
+00149 {{{80,5}},4}, {{{88,5}},769}, {{{84,5}},49}, {{{92,5}},12289},
+00150 {{{82,5}},13}, {{{90,5}},3073}, {{{86,5}},193}, {{{192,5}},24577}
+00151 };
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/inftrees_8h-source.html b/doc/api-documentation/html/inftrees_8h-source.html
new file mode 100644
index 0000000..bfd7b6a
--- /dev/null
+++ b/doc/api-documentation/html/inftrees_8h-source.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>inftrees.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>inftrees.h</h1><div class="fragment"><pre>00001 <font class="comment">/* inftrees.h -- header to use inftrees.c</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Mark Adler</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h </font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00007 <font class="comment"> part of the implementation of the compression library and is</font>
+00008 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00009 <font class="comment"> */</font>
+00010
+00011 <font class="comment">/* Huffman code lookup table entry--this entry is four bytes for machines</font>
+00012 <font class="comment"> that have 16-bit pointers (e.g. PC's in the small or medium model). */</font>
+00013
+00014 <font class="keyword">typedef</font> <font class="keyword">struct </font>inflate_huft_s FAR inflate_huft;
+00015
+00016 <font class="keyword">struct </font>inflate_huft_s {
+00017 <font class="keyword">union </font>{
+00018 <font class="keyword">struct </font>{
+00019 Byte Exop; <font class="comment">/* number of extra bits or operation */</font>
+00020 Byte Bits; <font class="comment">/* number of bits in this code or subcode */</font>
+00021 } what;
+00022 uInt pad; <font class="comment">/* pad structure to a power of 2 (4 bytes for */</font>
+00023 } word; <font class="comment">/* 16-bit, 8 bytes for 32-bit int's) */</font>
+00024 uInt base; <font class="comment">/* literal, length base, distance base,</font>
+00025 <font class="comment"> or table offset */</font>
+00026 };
+00027
+00028 <font class="comment">/* Maximum size of dynamic tree. The maximum found in a long but non-</font>
+00029 <font class="comment"> exhaustive search was 1004 huft structures (850 for length/literals</font>
+00030 <font class="comment"> and 154 for distances, the latter actually the result of an</font>
+00031 <font class="comment"> exhaustive search). The actual maximum is not known, but the</font>
+00032 <font class="comment"> value below is more than safe. */</font>
+00033 <font class="preprocessor">#define MANY 1440</font>
+00034 <font class="preprocessor"></font>
+00035 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_trees_bits OF((
+00036 uIntf *, <font class="comment">/* 19 code lengths */</font>
+00037 uIntf *, <font class="comment">/* bits tree desired/actual depth */</font>
+00038 inflate_huft * FAR *, <font class="comment">/* bits tree result */</font>
+00039 inflate_huft *, <font class="comment">/* space for trees */</font>
+00040 z_streamp)); <font class="comment">/* for messages */</font>
+00041
+00042 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_trees_dynamic OF((
+00043 uInt, <font class="comment">/* number of literal/length codes */</font>
+00044 uInt, <font class="comment">/* number of distance codes */</font>
+00045 uIntf *, <font class="comment">/* that many (total) code lengths */</font>
+00046 uIntf *, <font class="comment">/* literal desired/actual bit depth */</font>
+00047 uIntf *, <font class="comment">/* distance desired/actual bit depth */</font>
+00048 inflate_huft * FAR *, <font class="comment">/* literal/length tree result */</font>
+00049 inflate_huft * FAR *, <font class="comment">/* distance tree result */</font>
+00050 inflate_huft *, <font class="comment">/* space for trees */</font>
+00051 z_streamp)); <font class="comment">/* for messages */</font>
+00052
+00053 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_trees_fixed OF((
+00054 uIntf *, <font class="comment">/* literal desired/actual bit depth */</font>
+00055 uIntf *, <font class="comment">/* distance desired/actual bit depth */</font>
+00056 inflate_huft * FAR *, <font class="comment">/* literal/length tree result */</font>
+00057 inflate_huft * FAR *, <font class="comment">/* distance tree result */</font>
+00058 z_streamp)); <font class="comment">/* for memory allocation */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/infutil_8h-source.html b/doc/api-documentation/html/infutil_8h-source.html
new file mode 100644
index 0000000..c654bf5
--- /dev/null
+++ b/doc/api-documentation/html/infutil_8h-source.html
@@ -0,0 +1,112 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>infutil.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>infutil.h</h1><div class="fragment"><pre>00001 <font class="comment">/* infutil.h -- types and macros common to blocks and codes</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Mark Adler</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h </font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00007 <font class="comment"> part of the implementation of the compression library and is</font>
+00008 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00009 <font class="comment"> */</font>
+00010
+00011 <font class="preprocessor">#ifndef _INFUTIL_H</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#define _INFUTIL_H</font>
+00013 <font class="preprocessor"></font>
+00014 <font class="keyword">typedef</font> <font class="keyword">enum</font> {
+00015 TYPE, <font class="comment">/* get type bits (3, including end bit) */</font>
+00016 LENS, <font class="comment">/* get lengths for stored */</font>
+00017 STORED, <font class="comment">/* processing stored block */</font>
+00018 TABLE, <font class="comment">/* get table lengths */</font>
+00019 BTREE, <font class="comment">/* get bit lengths tree for a dynamic block */</font>
+00020 DTREE, <font class="comment">/* get length, distance trees for a dynamic block */</font>
+00021 CODES, <font class="comment">/* processing fixed or dynamic block */</font>
+00022 DRY, <font class="comment">/* output remaining window bytes */</font>
+00023 DONE, <font class="comment">/* finished last block, done */</font>
+00024 BAD} <font class="comment">/* got a data error--stuck here */</font>
+00025 inflate_block_mode;
+00026
+00027 <font class="comment">/* inflate blocks semi-private state */</font>
+00028 <font class="keyword">struct </font>inflate_blocks_state {
+00029
+00030 <font class="comment">/* mode */</font>
+00031 inflate_block_mode mode; <font class="comment">/* current inflate_block mode */</font>
+00032
+00033 <font class="comment">/* mode dependent information */</font>
+00034 <font class="keyword">union </font>{
+00035 uInt left; <font class="comment">/* if STORED, bytes left to copy */</font>
+00036 <font class="keyword">struct </font>{
+00037 uInt table; <font class="comment">/* table lengths (14 bits) */</font>
+00038 uInt index; <font class="comment">/* index into blens (or border) */</font>
+00039 uIntf *blens; <font class="comment">/* bit lengths of codes */</font>
+00040 uInt bb; <font class="comment">/* bit length tree depth */</font>
+00041 inflate_huft *tb; <font class="comment">/* bit length decoding tree */</font>
+00042 } trees; <font class="comment">/* if DTREE, decoding info for trees */</font>
+00043 <font class="keyword">struct </font>{
+00044 inflate_codes_statef
+00045 *codes;
+00046 } decode; <font class="comment">/* if CODES, current state */</font>
+00047 } sub; <font class="comment">/* submode */</font>
+00048 uInt last; <font class="comment">/* true if this block is the last block */</font>
+00049
+00050 <font class="comment">/* mode independent information */</font>
+00051 uInt bitk; <font class="comment">/* bits in bit buffer */</font>
+00052 uLong bitb; <font class="comment">/* bit buffer */</font>
+00053 inflate_huft *hufts; <font class="comment">/* single malloc for tree space */</font>
+00054 Bytef *window; <font class="comment">/* sliding window */</font>
+00055 Bytef *end; <font class="comment">/* one byte after sliding window */</font>
+00056 Bytef *read; <font class="comment">/* window read pointer */</font>
+00057 Bytef *write; <font class="comment">/* window write pointer */</font>
+00058 check_func checkfn; <font class="comment">/* check function */</font>
+00059 uLong check; <font class="comment">/* check on output */</font>
+00060
+00061 };
+00062
+00063
+00064 <font class="comment">/* defines for inflate input/output */</font>
+00065 <font class="comment">/* update pointers and return */</font>
+00066 <font class="preprocessor">#define UPDBITS {s-&gt;bitb=b;s-&gt;bitk=k;}</font>
+00067 <font class="preprocessor"></font><font class="preprocessor">#define UPDIN {z-&gt;avail_in=n;z-&gt;total_in+=p-z-&gt;next_in;z-&gt;next_in=p;}</font>
+00068 <font class="preprocessor"></font><font class="preprocessor">#define UPDOUT {s-&gt;write=q;}</font>
+00069 <font class="preprocessor"></font><font class="preprocessor">#define UPDATE {UPDBITS UPDIN UPDOUT}</font>
+00070 <font class="preprocessor"></font><font class="preprocessor">#define LEAVE {UPDATE return inflate_flush(s,z,r);}</font>
+00071 <font class="preprocessor"></font><font class="comment">/* get bytes and bits */</font>
+00072 <font class="preprocessor">#define LOADIN {p=z-&gt;next_in;n=z-&gt;avail_in;b=s-&gt;bitb;k=s-&gt;bitk;}</font>
+00073 <font class="preprocessor"></font><font class="preprocessor">#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}</font>
+00074 <font class="preprocessor"></font><font class="preprocessor">#define NEXTBYTE (n--,*p++)</font>
+00075 <font class="preprocessor"></font><font class="preprocessor">#define NEEDBITS(j) {while(k&lt;(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)&lt;&lt;k;k+=8;}}</font>
+00076 <font class="preprocessor"></font><font class="preprocessor">#define DUMPBITS(j) {b&gt;&gt;=(j);k-=(j);}</font>
+00077 <font class="preprocessor"></font><font class="comment">/* output bytes */</font>
+00078 <font class="preprocessor">#define WAVAIL (uInt)(q&lt;s-&gt;read?s-&gt;read-q-1:s-&gt;end-q)</font>
+00079 <font class="preprocessor"></font><font class="preprocessor">#define LOADOUT {q=s-&gt;write;m=(uInt)WAVAIL;}</font>
+00080 <font class="preprocessor"></font><font class="preprocessor">#define WRAP {if(q==s-&gt;end&amp;&amp;s-&gt;read!=s-&gt;window){q=s-&gt;window;m=(uInt)WAVAIL;}}</font>
+00081 <font class="preprocessor"></font><font class="preprocessor">#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT}</font>
+00082 <font class="preprocessor"></font><font class="preprocessor">#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;}</font>
+00083 <font class="preprocessor"></font><font class="preprocessor">#define OUTBYTE(a) {*q++=(Byte)(a);m--;}</font>
+00084 <font class="preprocessor"></font><font class="comment">/* load local pointers */</font>
+00085 <font class="preprocessor">#define LOAD {LOADIN LOADOUT}</font>
+00086 <font class="preprocessor"></font>
+00087 <font class="comment">/* masks for lower bits (size given to avoid silly warnings with Visual C++) */</font>
+00088 <font class="keyword">extern</font> uInt inflate_mask[17];
+00089
+00090 <font class="comment">/* copy as much as possible from the sliding window to the output area */</font>
+00091 <font class="keyword">extern</font> <font class="keywordtype">int</font> inflate_flush OF((
+00092 inflate_blocks_statef *,
+00093 z_streamp ,
+00094 <font class="keywordtype">int</font>));
+00095
+00096 <font class="keyword">struct </font>internal_state {<font class="keywordtype">int</font> dummy;}; <font class="comment">/* for buggy compilers */</font>
+00097
+00098 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/inherit__graph__0.png b/doc/api-documentation/html/inherit__graph__0.png
new file mode 100644
index 0000000..53d1b26
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__0.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__1.png b/doc/api-documentation/html/inherit__graph__1.png
new file mode 100644
index 0000000..d294c2e
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__1.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__10.png b/doc/api-documentation/html/inherit__graph__10.png
new file mode 100644
index 0000000..5699ebc
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__10.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__11.png b/doc/api-documentation/html/inherit__graph__11.png
new file mode 100644
index 0000000..27e53cb
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__11.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__12.png b/doc/api-documentation/html/inherit__graph__12.png
new file mode 100644
index 0000000..aaa4738
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__12.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__13.png b/doc/api-documentation/html/inherit__graph__13.png
new file mode 100644
index 0000000..5f2de1a
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__13.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__14.png b/doc/api-documentation/html/inherit__graph__14.png
new file mode 100644
index 0000000..d2c00a2
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__14.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__15.png b/doc/api-documentation/html/inherit__graph__15.png
new file mode 100644
index 0000000..c70bac1
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__15.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__16.png b/doc/api-documentation/html/inherit__graph__16.png
new file mode 100644
index 0000000..c1713e2
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__16.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__17.png b/doc/api-documentation/html/inherit__graph__17.png
new file mode 100644
index 0000000..df00c65
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__17.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__18.png b/doc/api-documentation/html/inherit__graph__18.png
new file mode 100644
index 0000000..f8fd9f1
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__18.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__19.png b/doc/api-documentation/html/inherit__graph__19.png
new file mode 100644
index 0000000..106f135
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__19.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__2.png b/doc/api-documentation/html/inherit__graph__2.png
new file mode 100644
index 0000000..7befca0
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__2.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__20.png b/doc/api-documentation/html/inherit__graph__20.png
new file mode 100644
index 0000000..e793599
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__20.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__21.png b/doc/api-documentation/html/inherit__graph__21.png
new file mode 100644
index 0000000..2223278
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__21.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__22.png b/doc/api-documentation/html/inherit__graph__22.png
new file mode 100644
index 0000000..3b9d35e
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__22.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__23.png b/doc/api-documentation/html/inherit__graph__23.png
new file mode 100644
index 0000000..0532bd0
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__23.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__24.png b/doc/api-documentation/html/inherit__graph__24.png
new file mode 100644
index 0000000..bf20a9a
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__24.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__25.png b/doc/api-documentation/html/inherit__graph__25.png
new file mode 100644
index 0000000..7a5117f
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__25.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__26.png b/doc/api-documentation/html/inherit__graph__26.png
new file mode 100644
index 0000000..07b0f23
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__26.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__27.png b/doc/api-documentation/html/inherit__graph__27.png
new file mode 100644
index 0000000..9428d00
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__27.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__28.png b/doc/api-documentation/html/inherit__graph__28.png
new file mode 100644
index 0000000..ac8ddfe
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__28.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__29.png b/doc/api-documentation/html/inherit__graph__29.png
new file mode 100644
index 0000000..cadc98d
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__29.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__3.png b/doc/api-documentation/html/inherit__graph__3.png
new file mode 100644
index 0000000..7f50a42
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__3.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__30.png b/doc/api-documentation/html/inherit__graph__30.png
new file mode 100644
index 0000000..65fb453
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__30.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__31.png b/doc/api-documentation/html/inherit__graph__31.png
new file mode 100644
index 0000000..a89bc9a
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__31.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__32.png b/doc/api-documentation/html/inherit__graph__32.png
new file mode 100644
index 0000000..cf5fd7d
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__32.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__33.png b/doc/api-documentation/html/inherit__graph__33.png
new file mode 100644
index 0000000..af1d2e6
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__33.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__34.png b/doc/api-documentation/html/inherit__graph__34.png
new file mode 100644
index 0000000..1e3494c
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__34.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__35.png b/doc/api-documentation/html/inherit__graph__35.png
new file mode 100644
index 0000000..f574d53
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__35.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__36.png b/doc/api-documentation/html/inherit__graph__36.png
new file mode 100644
index 0000000..01f6ce0
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__36.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__37.png b/doc/api-documentation/html/inherit__graph__37.png
new file mode 100644
index 0000000..b6fc908
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__37.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__38.png b/doc/api-documentation/html/inherit__graph__38.png
new file mode 100644
index 0000000..0727b10
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__38.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__39.png b/doc/api-documentation/html/inherit__graph__39.png
new file mode 100644
index 0000000..c109d77
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__39.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__4.png b/doc/api-documentation/html/inherit__graph__4.png
new file mode 100644
index 0000000..fa56e3d
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__4.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__40.png b/doc/api-documentation/html/inherit__graph__40.png
new file mode 100644
index 0000000..e46633d
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__40.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__41.png b/doc/api-documentation/html/inherit__graph__41.png
new file mode 100644
index 0000000..df945bc
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__41.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__42.png b/doc/api-documentation/html/inherit__graph__42.png
new file mode 100644
index 0000000..505f71a
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__42.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__43.png b/doc/api-documentation/html/inherit__graph__43.png
new file mode 100644
index 0000000..d870149
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__43.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__44.png b/doc/api-documentation/html/inherit__graph__44.png
new file mode 100644
index 0000000..dda66cc
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__44.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__45.png b/doc/api-documentation/html/inherit__graph__45.png
new file mode 100644
index 0000000..94cbe9f
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__45.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__46.png b/doc/api-documentation/html/inherit__graph__46.png
new file mode 100644
index 0000000..b6582aa
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__46.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__5.png b/doc/api-documentation/html/inherit__graph__5.png
new file mode 100644
index 0000000..746a594
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__5.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__6.png b/doc/api-documentation/html/inherit__graph__6.png
new file mode 100644
index 0000000..beb85fb
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__6.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__7.png b/doc/api-documentation/html/inherit__graph__7.png
new file mode 100644
index 0000000..f63c823
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__7.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__8.png b/doc/api-documentation/html/inherit__graph__8.png
new file mode 100644
index 0000000..68356c5
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__8.png
Binary files differ
diff --git a/doc/api-documentation/html/inherit__graph__9.png b/doc/api-documentation/html/inherit__graph__9.png
new file mode 100644
index 0000000..02f8125
--- /dev/null
+++ b/doc/api-documentation/html/inherit__graph__9.png
Binary files differ
diff --git a/doc/api-documentation/html/inherits.html b/doc/api-documentation/html/inherits.html
new file mode 100644
index 0000000..ac96391
--- /dev/null
+++ b/doc/api-documentation/html/inherits.html
@@ -0,0 +1,222 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Graphical Class Hierarchy</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project Graphical Class Hierarchy</h1><a href="hierarchy.html">Go to the textual class hierarchy</a>
+<p>
+<table border=0 cellspacing=10 cellpadding=0>
+<tr><td><img src="inherit__graph__0.png" border="0" usemap="#_encoding_filter_mgr_map"></td></tr>
+<map name="_encoding_filter_mgr_map">
+<area href="class_encoding_filter_mgr.html" shape="rect" coords="26,3,143,22" alt="">
+<area href="class_markup_filter_mgr.html" shape="rect" coords="193,3,302,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__1.png" border="0" usemap="#_g_b_f_footnotes_map"></td></tr>
+<map name="_g_b_f_footnotes_map">
+<area href="class_g_b_f_footnotes.html" shape="rect" coords="26,3,119,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__2.png" border="0" usemap="#_g_b_f_headings_map"></td></tr>
+<map name="_g_b_f_headings_map">
+<area href="class_g_b_f_headings.html" shape="rect" coords="25,3,115,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__3.png" border="0" usemap="#_g_b_f_h_t_m_l_map"></td></tr>
+<map name="_g_b_f_h_t_m_l_map">
+<area href="class_g_b_f_h_t_m_l.html" shape="rect" coords="26,3,98,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__4.png" border="0" usemap="#_g_b_f_morph_map"></td></tr>
+<map name="_g_b_f_morph_map">
+<area href="class_g_b_f_morph.html" shape="rect" coords="26,3,101,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__5.png" border="0" usemap="#_g_b_f_o_s_i_s_map"></td></tr>
+<map name="_g_b_f_o_s_i_s_map">
+<area href="class_g_b_f_o_s_i_s.html" shape="rect" coords="25,3,94,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__6.png" border="0" usemap="#_g_b_f_plain_map"></td></tr>
+<map name="_g_b_f_plain_map">
+<area href="class_g_b_f_plain.html" shape="rect" coords="25,3,91,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__7.png" border="0" usemap="#_g_b_f_r_t_f_map"></td></tr>
+<map name="_g_b_f_r_t_f_map">
+<area href="class_g_b_f_r_t_f.html" shape="rect" coords="25,3,89,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__8.png" border="0" usemap="#_g_b_f_strongs_map"></td></tr>
+<map name="_g_b_f_strongs_map">
+<area href="class_g_b_f_strongs.html" shape="rect" coords="25,3,107,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__9.png" border="0" usemap="#_g_b_f_th_m_l_map"></td></tr>
+<map name="_g_b_f_th_m_l_map">
+<area href="class_g_b_f_th_m_l.html" shape="rect" coords="26,3,95,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__10.png" border="0" usemap="#_greek_lex_attribs_map"></td></tr>
+<map name="_greek_lex_attribs_map">
+<area href="class_greek_lex_attribs.html" shape="rect" coords="25,3,131,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__11.png" border="0" usemap="#_latin1_u_t_f16_map"></td></tr>
+<map name="_latin1_u_t_f16_map">
+<area href="class_latin1_u_t_f16.html" shape="rect" coords="25,3,107,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__12.png" border="0" usemap="#_latin1_u_t_f8_map"></td></tr>
+<map name="_latin1_u_t_f8_map">
+<area href="class_latin1_u_t_f8.html" shape="rect" coords="25,3,102,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__13.png" border="0" usemap="#_locale_mgr_map"></td></tr>
+<map name="_locale_mgr_map">
+<area href="class_locale_mgr.html" shape="rect" coords="26,3,98,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__14.png" border="0" usemap="#_p_l_a_i_n_footnotes_map"></td></tr>
+<map name="_p_l_a_i_n_footnotes_map">
+<area href="class_p_l_a_i_n_footnotes.html" shape="rect" coords="26,3,130,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__15.png" border="0" usemap="#_p_l_a_i_n_h_t_m_l_map"></td></tr>
+<map name="_p_l_a_i_n_h_t_m_l_map">
+<area href="class_p_l_a_i_n_h_t_m_l.html" shape="rect" coords="25,3,107,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__16.png" border="0" usemap="#_r_t_f_h_t_m_l_map"></td></tr>
+<map name="_r_t_f_h_t_m_l_map">
+<area href="class_r_t_f_h_t_m_l.html" shape="rect" coords="25,3,97,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__17.png" border="0" usemap="#_r_w_p_h_t_m_l_map"></td></tr>
+<map name="_r_w_p_h_t_m_l_map">
+<area href="class_r_w_p_h_t_m_l.html" shape="rect" coords="25,3,102,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__18.png" border="0" usemap="#_r_w_p_r_t_f_map"></td></tr>
+<map name="_r_w_p_r_t_f_map">
+<area href="class_r_w_p_r_t_f.html" shape="rect" coords="25,3,94,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__19.png" border="0" usemap="#_s_c_s_u_u_t_f8_map"></td></tr>
+<map name="_s_c_s_u_u_t_f8_map">
+<area href="class_s_c_s_u_u_t_f8.html" shape="rect" coords="26,3,106,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__20.png" border="0" usemap="#_s_w_basic_filter_map"></td></tr>
+<map name="_s_w_basic_filter_map">
+<area href="class_s_w_basic_filter.html" shape="rect" coords="26,67,122,86" alt="">
+<area href="class_g_b_f_h_t_m_l_h_r_e_f.html" shape="rect" coords="175,3,282,22" alt="">
+<area href="class_th_m_l_h_t_m_l.html" shape="rect" coords="189,46,269,65" alt="">
+<area href="class_th_m_l_h_t_m_l_h_r_e_f.html" shape="rect" coords="171,89,286,107" alt="">
+<area href="class_th_m_l_r_t_f.html" shape="rect" coords="194,131,263,150" alt="">
+</map>
+<tr><td><img src="inherit__graph__21.png" border="0" usemap="#_s_w_class_map"></td></tr>
+<map name="_s_w_class_map">
+<area href="class_s_w_class.html" shape="rect" coords="26,3,90,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__22.png" border="0" usemap="#_s_w_config_map"></td></tr>
+<map name="_s_w_config_map">
+<area href="class_s_w_config.html" shape="rect" coords="26,3,95,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__23.png" border="0" usemap="#_s_w_input_method_map"></td></tr>
+<map name="_s_w_input_method_map">
+<area href="class_s_w_input_method.html" shape="rect" coords="26,3,130,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__24.png" border="0" usemap="#_s_w_locale_map"></td></tr>
+<map name="_s_w_locale_map">
+<area href="class_s_w_locale.html" shape="rect" coords="25,3,97,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__25.png" border="0" usemap="#_s_w_mgr_map"></td></tr>
+<map name="_s_w_mgr_map">
+<area href="class_s_w_mgr.html" shape="rect" coords="26,3,82,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__26.png" border="0" usemap="#_s_w_module_map"></td></tr>
+<map name="_s_w_module_map">
+<area href="class_s_w_module.html" shape="rect" coords="25,67,99,86" alt="">
+<area href="class_s_w_com.html" shape="rect" coords="161,3,222,22" alt="">
+<area href="class_s_w_gen_book.html" shape="rect" coords="147,46,235,65" alt="">
+<area href="class_s_w_l_d.html" shape="rect" coords="167,89,215,107" alt="">
+<area href="class_s_w_text.html" shape="rect" coords="162,131,221,150" alt="">
+</map>
+<tr><td><img src="inherit__graph__27.png" border="0" usemap="#_s_w_object_map"></td></tr>
+<map name="_s_w_object_map">
+<area href="class_s_w_object.html" shape="rect" coords="26,46,98,65" alt="">
+<area href="class_s_w_display.html" shape="rect" coords="149,25,223,43" alt="">
+<area href="class_s_w_key.html" shape="rect" coords="158,67,214,86" alt="">
+<area href="class_list_key.html" shape="rect" coords="281,3,334,22" alt="">
+<area href="class_str_key.html" shape="rect" coords="282,46,333,65" alt="">
+<area href="class_tree_key.html" shape="rect" coords="277,89,338,107" alt="">
+<area href="class_verse_key.html" shape="rect" coords="273,131,342,150" alt="">
+<area href="class_tree_key_idx.html" shape="rect" coords="391,89,469,107" alt="">
+</map>
+<tr><td><img src="inherit__graph__28.png" border="0" usemap="#_th_m_l_footnotes_map"></td></tr>
+<map name="_th_m_l_footnotes_map">
+<area href="class_th_m_l_footnotes.html" shape="rect" coords="25,3,126,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__29.png" border="0" usemap="#_th_m_l_g_b_f_map"></td></tr>
+<map name="_th_m_l_g_b_f_map">
+<area href="class_th_m_l_g_b_f.html" shape="rect" coords="25,3,97,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__30.png" border="0" usemap="#_th_m_l_headings_map"></td></tr>
+<map name="_th_m_l_headings_map">
+<area href="class_th_m_l_headings.html" shape="rect" coords="26,3,122,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__31.png" border="0" usemap="#_th_m_l_lemma_map"></td></tr>
+<map name="_th_m_l_lemma_map">
+<area href="class_th_m_l_lemma.html" shape="rect" coords="25,3,113,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__32.png" border="0" usemap="#_th_m_l_morph_map"></td></tr>
+<map name="_th_m_l_morph_map">
+<area href="class_th_m_l_morph.html" shape="rect" coords="25,3,107,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__33.png" border="0" usemap="#_th_m_l_o_l_b_map"></td></tr>
+<map name="_th_m_l_o_l_b_map">
+<area href="class_th_m_l_o_l_b.html" shape="rect" coords="25,3,97,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__34.png" border="0" usemap="#_th_m_l_o_s_i_s_map"></td></tr>
+<map name="_th_m_l_o_s_i_s_map">
+<area href="class_th_m_l_o_s_i_s.html" shape="rect" coords="25,3,102,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__35.png" border="0" usemap="#_th_m_l_plain_map"></td></tr>
+<map name="_th_m_l_plain_map">
+<area href="class_th_m_l_plain.html" shape="rect" coords="26,3,98,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__36.png" border="0" usemap="#_th_m_l_scripref_map"></td></tr>
+<map name="_th_m_l_scripref_map">
+<area href="class_th_m_l_scripref.html" shape="rect" coords="26,3,119,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__37.png" border="0" usemap="#_th_m_l_strongs_map"></td></tr>
+<map name="_th_m_l_strongs_map">
+<area href="class_th_m_l_strongs.html" shape="rect" coords="26,3,114,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__38.png" border="0" usemap="#_th_m_l_variants_map"></td></tr>
+<map name="_th_m_l_variants_map">
+<area href="class_th_m_l_variants.html" shape="rect" coords="25,3,118,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__39.png" border="0" usemap="#_unicode_r_t_f_map"></td></tr>
+<map name="_unicode_r_t_f_map">
+<area href="class_unicode_r_t_f.html" shape="rect" coords="25,3,110,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__40.png" border="0" usemap="#_u_t_f16_u_t_f8_map"></td></tr>
+<map name="_u_t_f16_u_t_f8_map">
+<area href="class_u_t_f16_u_t_f8.html" shape="rect" coords="26,3,106,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__41.png" border="0" usemap="#_u_t_f8_cantillation_map"></td></tr>
+<map name="_u_t_f8_cantillation_map">
+<area href="class_u_t_f8_cantillation.html" shape="rect" coords="25,3,134,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__42.png" border="0" usemap="#_u_t_f8_greek_accents_map"></td></tr>
+<map name="_u_t_f8_greek_accents_map">
+<area href="class_u_t_f8_greek_accents.html" shape="rect" coords="26,3,154,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__43.png" border="0" usemap="#_u_t_f8_hebrew_points_map"></td></tr>
+<map name="_u_t_f8_hebrew_points_map">
+<area href="class_u_t_f8_hebrew_points.html" shape="rect" coords="25,3,150,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__44.png" border="0" usemap="#_u_t_f8_h_t_m_l_map"></td></tr>
+<map name="_u_t_f8_h_t_m_l_map">
+<area href="class_u_t_f8_h_t_m_l.html" shape="rect" coords="26,3,103,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__45.png" border="0" usemap="#_u_t_f8_latin1_map"></td></tr>
+<map name="_u_t_f8_latin1_map">
+<area href="class_u_t_f8_latin1.html" shape="rect" coords="25,3,102,22" alt="">
+</map>
+<tr><td><img src="inherit__graph__46.png" border="0" usemap="#_u_t_f8_u_t_f16_map"></td></tr>
+<map name="_u_t_f8_u_t_f16_map">
+<area href="class_u_t_f8_u_t_f16.html" shape="rect" coords="26,3,106,22" alt="">
+</map>
+</table>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:06 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/jfbgen_8cpp-source.html b/doc/api-documentation/html/jfbgen_8cpp-source.html
new file mode 100644
index 0000000..dfff10b
--- /dev/null
+++ b/doc/api-documentation/html/jfbgen_8cpp-source.html
@@ -0,0 +1,256 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>jfbgen.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>jfbgen.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> */</font>
+00004
+00005 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00006 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00009
+00010 <font class="preprocessor">#ifndef __GNUC__</font>
+00011 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00012 <font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00017 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00018
+00019 <font class="preprocessor">#ifndef O_BINARY</font>
+00020 <font class="preprocessor"></font><font class="preprocessor"> #define O_BINARY 0</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00024 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size);
+00025 <font class="keywordtype">void</font> openfiles();
+00026 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00027 <font class="keywordtype">void</font> charsetconvert(<font class="keywordtype">char</font> *data);
+00028
+00029
+00030 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00031 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00032 <font class="keywordtype">long</font> chapoffset;
+00033 <font class="keywordtype">short</font> chapsize;
+00034 <font class="keywordtype">char</font> testmnt;
+00035 <font class="keywordtype">char</font> startflag = 0;
+00036
+00037
+00038 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00039 {
+00040 <font class="keywordtype">long</font> pos, offset;
+00041 <font class="keywordtype">int</font> num1, num2, rangemax, curbook = 0, curchap = 0, curverse = 0;
+00042 <font class="keywordtype">char</font> buf[127];
+00043 <font class="keywordtype">short</font> size, tmp;
+00044 <font class="keyword">extern</font> <font class="keyword">struct </font>zonline online;
+00045
+00046 checkparams(argc, argv);
+00047
+00048 key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00049
+00050 openfiles();
+00051
+00052 num1 = key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00053 num2 = key1.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00054
+00055 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00056 <font class="keywordflow">if</font> (!startflag) {
+00057 startflag = 1;
+00058 }
+00059 <font class="keywordflow">else</font> {
+00060 <font class="keywordflow">if</font> (num2 &lt; key2.<a class="code" href="class_verse_key.html#a25">Verse</a>()) { <font class="comment">// new chapter</font>
+00061 <font class="keywordflow">if</font> (num1 &lt;= key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>()) { <font class="comment">// new book</font>
+00062 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00063 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00064 key2.<a class="code" href="class_verse_key.html#a23">Book</a>(key2.<a class="code" href="class_verse_key.html#a23">Book</a>()+1);
+00065 }
+00066 printf(<font class="stringliteral">"Found Chapter Break: %d ('%s')\n"</font>, num1, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key2);
+00067 chapoffset = offset;
+00068 chapsize = size;
+00069 <font class="comment">// continue;</font>
+00070 }
+00071 }
+00072 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00073 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00074 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(num2);
+00075
+00076 key3 = key2;
+00077 <font class="comment">// key3 += (rangemax - key3.Verse());</font>
+00078
+00079 writeidx(key1, key2, key3, offset, size);
+00080 }
+00081 close(vfp);
+00082 close(cfp);
+00083 close(bfp);
+00084 close(fp);
+00085 }
+00086
+00087
+00088 <font class="comment">/**************************************************************************</font>
+00089 <font class="comment"> * ENT: key1 - current location of index</font>
+00090 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00091 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00092 <font class="comment"> */</font>
+00093
+00094 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00095 {
+00096 <font class="keywordtype">long</font> pos;
+00097 <font class="keywordtype">short</font> tmp;
+00098
+00099 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00100 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00101 pos = lseek(cfp, 0, SEEK_CUR);
+00102 write(bfp, &amp;pos, 4);
+00103 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00104 write(cfp, &amp;pos, 4);
+00105 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Book intro (vss) set to same as chap for now(it should be chap 1 which usually contains the book into anyway)*/</font>
+00106 write(vfp, &amp;chapsize, 2);
+00107 }
+00108 pos = lseek(vfp, 0, SEEK_CUR);
+00109 write(cfp, &amp;pos, 4);
+00110 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00111 write(vfp, &amp;chapsize, 2);
+00112 }
+00113 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00114 write(vfp, &amp;offset, 4);
+00115 write(vfp, &amp;size, 2);
+00116 }
+00117 <font class="keywordflow">else</font> {
+00118 pos = 0;
+00119 tmp = 0;
+00120 write(vfp, &amp;pos, 4);
+00121 write(vfp, &amp;tmp, 2);
+00122 }
+00123 key1++;
+00124 }
+00125
+00126
+00127 <font class="keyword">static</font> <a class="code" href="class_verse_key.html">VerseKey</a> inckey = <font class="stringliteral">"Genesis 1:1"</font>;
+00128
+00129 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size)
+00130 {
+00131 <font class="keywordtype">char</font> buf[7];
+00132 <font class="keywordtype">char</font> buf2[20];
+00133 <font class="keywordtype">char</font> ch;
+00134 <font class="keywordtype">char</font> loop;
+00135 <font class="keywordtype">long</font> offset2;
+00136 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00137 <font class="keywordtype">bool</font> flag;
+00138 <font class="keywordtype">long</font> chapstart = 0;
+00139 <font class="keyword">static</font> <font class="keywordtype">int</font> olbvnum = 0;
+00140 <font class="keywordtype">char</font> data[256];
+00141 <font class="keywordtype">char</font> *bookabrev[66] = {<font class="stringliteral">"Ge"</font>, <font class="stringliteral">"Ex"</font>, <font class="stringliteral">"Le"</font>, <font class="stringliteral">"Nu"</font>, <font class="stringliteral">"De"</font>, <font class="stringliteral">"Jos"</font>, <font class="stringliteral">"Jud"</font>, <font class="stringliteral">"Ru"</font>,
+00142 <font class="stringliteral">"1Sa"</font>, <font class="stringliteral">"2Sa"</font>, <font class="stringliteral">"1Ki"</font>, <font class="stringliteral">"2Ki"</font>, <font class="stringliteral">"1Ch"</font>, <font class="stringliteral">"2Ch"</font>, <font class="stringliteral">"Ezr"</font>, <font class="stringliteral">"Ne"</font>, <font class="stringliteral">"Es"</font>,
+00143 <font class="stringliteral">"Job"</font>, <font class="stringliteral">"Ps"</font>, <font class="stringliteral">"Pr"</font>, <font class="stringliteral">"Ec"</font>, <font class="stringliteral">"So"</font>, <font class="stringliteral">"Isa"</font>, <font class="stringliteral">"Jer"</font>, <font class="stringliteral">"La"</font>, <font class="stringliteral">"Eze"</font>, <font class="stringliteral">"Da"</font>,
+00144 <font class="stringliteral">"Ho"</font>, <font class="stringliteral">"Joe"</font>, <font class="stringliteral">"Am"</font>, <font class="stringliteral">"Ob"</font>, <font class="stringliteral">"Jon"</font>, <font class="stringliteral">"Mic"</font>, <font class="stringliteral">"Na"</font>, <font class="stringliteral">"Heb"</font>, <font class="stringliteral">"Zep"</font>,
+00145 <font class="stringliteral">"Hag"</font>, <font class="stringliteral">"Zec"</font>, <font class="stringliteral">"Mal"</font>,
+00146 <font class="stringliteral">"Mt"</font>, <font class="stringliteral">"Mr"</font>, <font class="stringliteral">"Lu"</font>, <font class="stringliteral">"Joh"</font>, <font class="stringliteral">"Ac"</font>, <font class="stringliteral">"Ro"</font>, <font class="stringliteral">"1Co"</font>, <font class="stringliteral">"2Co"</font>, <font class="stringliteral">"Ga"</font>,
+00147 <font class="stringliteral">"Eph"</font>, <font class="stringliteral">"Php"</font>, <font class="stringliteral">"Col"</font>, <font class="stringliteral">"1Th"</font>, <font class="stringliteral">"2Th"</font>, <font class="stringliteral">"1Ti"</font>, <font class="stringliteral">"2Ti"</font>, <font class="stringliteral">"Tit"</font>, <font class="stringliteral">"Phm"</font>,
+00148 <font class="stringliteral">"Heb"</font>, <font class="stringliteral">"Jas"</font>, <font class="stringliteral">"1Pe"</font>, <font class="stringliteral">"2Pe"</font>, <font class="stringliteral">"1Jo"</font>, <font class="stringliteral">"2Jo"</font>, <font class="stringliteral">"3Jo"</font>, <font class="stringliteral">"Jude"</font>, <font class="stringliteral">"Re"</font> };
+00149
+00150 <font class="keywordflow">if</font> (++olbvnum &lt;= 31102) {
+00151
+00152 <font class="keywordflow">if</font> (olbvnum == 23146) { <font class="comment">// "Matthew 1:1" </font>
+00153 close(vfp);
+00154 close(cfp);
+00155 close(bfp);
+00156 close(fp);
+00157 key1 = key2 = key3 = inckey = <font class="stringliteral">"Matthew 1:1"</font>;
+00158 openfiles();
+00159 startflag = 0;
+00160 }
+00161
+00162
+00163 *offset = lseek(fp, 0, SEEK_CUR);
+00164
+00165 <font class="keywordflow">if</font> ((olbvnum!=1) &amp;&amp; (olbvnum != 23146))
+00166 inckey++;
+00167
+00168 *num1 = inckey.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00169 *num2 = inckey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00170
+00171 sprintf(data, <font class="stringliteral">"JFB%.2d.htm#%s%d_%d"</font>, inckey.<a class="code" href="class_verse_key.html#a23">Book</a>() + ((inckey.<a class="code" href="class_verse_key.html#a22">Testament</a>()&gt;1)?39:0), bookabrev[inckey.<a class="code" href="class_verse_key.html#a23">Book</a>() + ((inckey.<a class="code" href="class_verse_key.html#a22">Testament</a>()&gt;1)?39:0)-1], inckey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(), inckey.<a class="code" href="class_verse_key.html#a25">Verse</a>());
+00172 write(fp, data, strlen(data));
+00173
+00174 *size = lseek(fp, 0, SEEK_CUR) - *offset;
+00175 write(fp, <font class="stringliteral">"\n"</font>, 1);
+00176 <font class="keywordflow">return</font> 0;
+00177 }
+00178 <font class="keywordflow">return</font> 1;
+00179 }
+00180
+00181
+00182 <font class="keywordtype">void</font> openfiles()
+00183 {
+00184 <font class="keywordtype">char</font> buf[255];
+00185 <font class="keywordtype">char</font> fname[5];
+00186 <font class="keywordtype">long</font> pos;
+00187 <font class="keywordtype">short</font> size;
+00188
+00189 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00190
+00191 strcpy(fname, (testmnt==2) ? <font class="stringliteral">"nt"</font> : <font class="stringliteral">"ot"</font>);
+00192 unlink(fname);
+00193 <font class="keywordflow">if</font> ((fp = open(fname, O_CREAT|O_RDWR|O_BINARY)) == -1) {
+00194 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00195 exit(1);
+00196 }
+00197
+00198 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00199 unlink(buf);
+00200 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00201 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00202 exit(1);
+00203 }
+00204
+00205 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00206 unlink(buf);
+00207 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00208 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00209 exit(1);
+00210 }
+00211
+00212 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00213 unlink(buf);
+00214 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00215 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00216 exit(1);
+00217 }
+00218
+00219 pos = 0;
+00220 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00221 pos = 4;
+00222 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00223
+00224
+00225 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00226 pos = 0;
+00227 size = 0;
+00228 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00229 write(vfp, &amp;size, 2);
+00230 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00231 write(vfp, &amp;size, 2);
+00232
+00233 }
+00234
+00235
+00236 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00237 {
+00238 <font class="keywordflow">if</font> (argc !=1) {
+00239 fprintf(stderr, <font class="stringliteral">"usage: %s\n"</font>, argv[0]);
+00240 exit(1);
+00241 }
+00242 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/kjvidx_8cpp-source.html b/doc/api-documentation/html/kjvidx_8cpp-source.html
new file mode 100644
index 0000000..6bd4a1a
--- /dev/null
+++ b/doc/api-documentation/html/kjvidx_8cpp-source.html
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>kjvidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>kjvidx.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00003 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00004
+00005
+00006 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size);
+00007
+00008
+00009 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00010 {
+00011 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00012 <font class="keywordtype">long</font> pos;
+00013 <font class="keywordtype">short</font> size, tmp;
+00014 <font class="keywordtype">int</font> num1, num2, offset, curbook = 0, curchap = 0, curverse = 0;
+00015 <font class="keywordtype">char</font> buf[127];
+00016 <a class="code" href="class_verse_key.html">VerseKey</a> mykey;
+00017
+00018 <font class="keywordflow">if</font> ((argc &lt; 2) || (argc &gt; 3)) {
+00019 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt]\n"</font>, argv[0]);
+00020 exit(1);
+00021 }
+00022
+00023 <font class="keywordflow">if</font> ((fp = open(argv[1], O_RDONLY)) == -1) {
+00024 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, argv[1]);
+00025 exit(1);
+00026 }
+00027
+00028 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, argv[1]);
+00029 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00030 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00031 exit(1);
+00032 }
+00033
+00034 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, argv[1]);
+00035 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00036 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00037 exit(1);
+00038 }
+00039
+00040 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, argv[1]);
+00041 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00042 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00043 exit(1);
+00044 }
+00045
+00046 pos = 0;
+00047 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00048 pos = 4;
+00049 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00050
+00051
+00052 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00053 pos = 0;
+00054 size = 0;
+00055 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00056 write(vfp, &amp;size, 2);
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059
+00060 mykey = (argc == 3) ? <font class="stringliteral">"Matthew 1:1"</font> : <font class="stringliteral">"Genesis 1:1"</font>;
+00061
+00062 <font class="keywordflow">while</font> (!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;size)) {
+00063 num1 = mykey.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00064 num2 = mykey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00065 <font class="keywordflow">if</font> (num2 == 1) { <font class="comment">/* if we're at a new chapter */</font>
+00066 <font class="keywordflow">if</font> (num1 == 1) { <font class="comment">/* if we're at a new book */</font>
+00067 pos = lseek(cfp, 0, SEEK_CUR);
+00068 write(bfp, &amp;pos, 4);
+00069 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00070 write(cfp, &amp;pos, 4);
+00071 pos = 0;
+00072 tmp = 0;
+00073 write(vfp, &amp;pos, 4); <font class="comment">/* Book intro (vss) */</font>
+00074 write(vfp, &amp;tmp, 2);
+00075 curbook++;
+00076 curchap = 0;
+00077 }
+00078 pos = lseek(vfp, 0, SEEK_CUR);
+00079 write(cfp, &amp;pos, 4);
+00080 curverse = 1;
+00081 pos = 0;
+00082 tmp = 0;
+00083 write(vfp, &amp;pos, 4); <font class="comment">/* Chapter intro */</font>
+00084 write(vfp, &amp;tmp, 2);
+00085 curchap++;
+00086 }
+00087 <font class="keywordflow">else</font> curverse++;
+00088
+00089 printf(<font class="stringliteral">"%2d:%3d:%3d found at offset: %7d\n"</font>, curbook, num1, num2, offset);
+00090
+00091 <font class="keywordflow">if</font> (num1 != curchap) {
+00092 fprintf(stderr, <font class="stringliteral">"Error: Found chaptures out of sequence\n"</font>);
+00093 <font class="keywordflow">break</font>;
+00094 }
+00095 <font class="keywordflow">if</font> (num2 != curverse) {
+00096 fprintf(stderr, <font class="stringliteral">"Error: Found verses out of sequence\n"</font>);
+00097 <font class="keywordflow">break</font>;
+00098 }
+00099 write(vfp, &amp;offset, 4);
+00100 write(vfp, &amp;size, 2);
+00101 mykey++;
+00102 }
+00103
+00104 close(vfp);
+00105 close(cfp);
+00106 close(bfp);
+00107 close(fp);
+00108 }
+00109
+00110
+00111 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size)
+00112 {
+00113 <font class="keywordtype">char</font> buf[17];
+00114 <font class="keywordtype">char</font> buf2[7];
+00115 <font class="keywordtype">char</font> loop;
+00116 <font class="keywordtype">char</font> offadj, inquotes, sizeadj;
+00117 <font class="keywordtype">int</font> offset2, ch2, vs2;
+00118
+00119 memset(buf, <font class="charliteral">' '</font>, 17);
+00120
+00121 <font class="keywordflow">while</font> (1) {
+00122 offadj = -10;
+00123 inquotes = 0;
+00124 sizeadj = 0;
+00125 <font class="keywordflow">if</font> ((!memcmp(buf, <font class="stringliteral">"\\widctlpar {\\b\\f0\\cf2 "</font>, 16)) &amp;&amp; (!size)) {
+00126 offadj = -1;
+00127 <font class="comment">// inquotes = 1;</font>
+00128 sizeadj = -18;
+00129 }
+00130 <font class="keywordflow">if</font> (!memcmp(&amp;buf[1], <font class="stringliteral">"\\f0\\fs16\\cf2\\up6"</font>, 15)) {
+00131 offadj = 0;
+00132 inquotes = 1;
+00133 sizeadj = (*buf == 10) ? -18:-17;
+00134 }
+00135 <font class="keywordflow">if</font> (!memcmp(buf, <font class="stringliteral">"\\fi200\\widctlpar"</font>, 16)) {
+00136 offadj = -1;
+00137 <font class="comment">// inquotes = 1;</font>
+00138 sizeadj = -18;
+00139 }
+00140 <font class="keywordflow">if</font> (offadj &gt; -10) {
+00141 *offset = lseek(fp, 0, SEEK_CUR) + offadj;
+00142 <font class="keywordflow">if</font> (size) {
+00143 (*offset)++;
+00144 <font class="keywordflow">while</font> (inquotes) {
+00145 <font class="keywordflow">while</font> (read(fp, buf2, 1) == 1) {
+00146 <font class="keywordflow">if</font> (*buf2 == <font class="charliteral">'}'</font>)
+00147 <font class="keywordflow">break</font>;
+00148 (*offset)++;
+00149 }
+00150 inquotes--;
+00151 }
+00152 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, 0)) {
+00153 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00154 }
+00155 <font class="keywordflow">else</font> {
+00156 sprintf(buf2, <font class="stringliteral">"%d:%d"</font>, ch2, vs2);
+00157 *size = (offset2 - (*offset));
+00158 }
+00159 lseek(fp, *offset+17, SEEK_SET);
+00160 }
+00161 <font class="keywordflow">else</font> (*offset) += sizeadj;
+00162 <font class="keywordflow">return</font> 0;
+00163 }
+00164 memmove(buf, &amp;buf[1], 16);
+00165 <font class="keywordflow">if</font> (read(fp, &amp;buf[16], 1) != 1)
+00166 <font class="keywordflow">return</font> 1;
+00167 }
+00168 }
+00169
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/latin1utf16_8cpp-source.html b/doc/api-documentation/html/latin1utf16_8cpp-source.html
new file mode 100644
index 0000000..39a4173
--- /dev/null
+++ b/doc/api-documentation/html/latin1utf16_8cpp-source.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>latin1utf16.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>latin1utf16.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Latin1UTF16 - SWFilter decendant to convert a Latin-1 character to UTF-16</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;latin1utf16.h&gt;</font>
+00011
+00012 Latin1UTF16::Latin1UTF16() {
+00013 }
+00014
+00015
+00016 <font class="keywordtype">char</font> Latin1UTF16::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00017 {
+00018 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *from;
+00019 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *to;
+00020 <font class="keywordtype">int</font> len;
+00021
+00022 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00023 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00024 memmove(&amp;text[maxlen - len], text, len);
+00025 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)&amp;text[maxlen - len];
+00026 }
+00027 <font class="keywordflow">else</font>
+00028 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00029 <font class="comment">// -------------------------------</font>
+00030
+00031 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>*)text; *from; from++) {
+00032 <font class="keywordflow">switch</font> (*from) {
+00033 <font class="keywordflow">case</font> 0x80: <font class="comment">// '€'</font>
+00034 *to++ = 0x20AC;
+00035 <font class="keywordflow">break</font>;
+00036 <font class="keywordflow">case</font> 0x82: <font class="comment">// '‚'</font>
+00037 *to++ = 0x201A;
+00038 <font class="keywordflow">break</font>;
+00039 <font class="keywordflow">case</font> 0x83: <font class="comment">// 'ƒ'</font>
+00040 *to++ = 0x0192;
+00041 <font class="keywordflow">break</font>;
+00042 <font class="keywordflow">case</font> 0x84: <font class="comment">// '„'</font>
+00043 *to++ = 0x201E;
+00044 <font class="keywordflow">break</font>;
+00045 <font class="keywordflow">case</font> 0x85: <font class="comment">// '…'</font>
+00046 *to++ = 0x2026;
+00047 <font class="keywordflow">break</font>;
+00048 <font class="keywordflow">case</font> 0x86: <font class="comment">// '†'</font>
+00049 *to++ = 0x2020;
+00050 <font class="keywordflow">break</font>;
+00051 <font class="keywordflow">case</font> 0x87: <font class="comment">// '‡'</font>
+00052 *to++ = 0x2021;
+00053 <font class="keywordflow">break</font>;
+00054 <font class="keywordflow">case</font> 0x88: <font class="comment">// 'ˆ'</font>
+00055 *to++ = 0x02C6;
+00056 <font class="keywordflow">break</font>;
+00057 <font class="keywordflow">case</font> 0x89: <font class="comment">// '‰'</font>
+00058 *to++ = 0x2030;
+00059 <font class="keywordflow">break</font>;
+00060 <font class="keywordflow">case</font> 0x8A: <font class="comment">// 'Š'</font>
+00061 *to++ = 0x0160;
+00062 <font class="keywordflow">break</font>;
+00063 <font class="keywordflow">case</font> 0x8B: <font class="comment">// '‹'</font>
+00064 *to++ = 0x2039;
+00065 <font class="keywordflow">break</font>;
+00066 <font class="keywordflow">case</font> 0x8C: <font class="comment">// 'Œ'</font>
+00067 *to++ = 0x0152;
+00068 <font class="keywordflow">break</font>;
+00069 <font class="keywordflow">case</font> 0x8E: <font class="comment">// 'Ž'</font>
+00070 *to++ = 0x017D;
+00071 <font class="keywordflow">break</font>;
+00072 <font class="keywordflow">case</font> 0x91: <font class="comment">// '‘'</font>
+00073 *to++ = 0x2018;
+00074 <font class="keywordflow">break</font>;
+00075 <font class="keywordflow">case</font> 0x92: <font class="comment">// '’'</font>
+00076 *to++ = 0x2019;
+00077 <font class="keywordflow">break</font>;
+00078 <font class="keywordflow">case</font> 0x93: <font class="comment">// '“'</font>
+00079 *to++ = 0x201C;
+00080 <font class="keywordflow">break</font>;
+00081 <font class="keywordflow">case</font> 0x94: <font class="comment">// '”'</font>
+00082 *to++ = 0x201D;
+00083 <font class="keywordflow">break</font>;
+00084 <font class="keywordflow">case</font> 0x95: <font class="comment">// '•'</font>
+00085 *to++ = 0x2022;
+00086 <font class="keywordflow">break</font>;
+00087 <font class="keywordflow">case</font> 0x96: <font class="comment">// '–'</font>
+00088 *to++ = 0x2013;
+00089 <font class="keywordflow">break</font>;
+00090 <font class="keywordflow">case</font> 0x97: <font class="comment">// '—'</font>
+00091 *to++ = 0x2014;
+00092 <font class="keywordflow">break</font>;
+00093 <font class="keywordflow">case</font> 0x98: <font class="comment">// '˜'</font>
+00094 *to++ = 0x02DC;
+00095 <font class="keywordflow">break</font>;
+00096 <font class="keywordflow">case</font> 0x99: <font class="comment">// '™'</font>
+00097 *to++ = 0x2122;
+00098 <font class="keywordflow">break</font>;
+00099 <font class="keywordflow">case</font> 0x9A: <font class="comment">// 'š'</font>
+00100 *to++ = 0x0161;
+00101 <font class="keywordflow">break</font>;
+00102 <font class="keywordflow">case</font> 0x9B: <font class="comment">// '›'</font>
+00103 *to++ = 0x203A;
+00104 <font class="keywordflow">break</font>;
+00105 <font class="keywordflow">case</font> 0x9C: <font class="comment">// 'œ'</font>
+00106 *to++ = 0x0153;
+00107 <font class="keywordflow">break</font>;
+00108 <font class="keywordflow">case</font> 0x9E: <font class="comment">// 'ž'</font>
+00109 *to++ = 0x017E;
+00110 <font class="keywordflow">break</font>;
+00111 <font class="keywordflow">case</font> 0x9F: <font class="comment">// 'Ÿ'</font>
+00112 *to++ = 0x0178;
+00113 <font class="keywordflow">break</font>;
+00114 <font class="keywordflow">default</font>:
+00115 *to++ = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)*from;
+00116 }
+00117 }
+00118 *to = 0;
+00119 <font class="keywordflow">return</font> 0;
+00120 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/latin1utf16_8h-source.html b/doc/api-documentation/html/latin1utf16_8h-source.html
new file mode 100644
index 0000000..d7b7c3c
--- /dev/null
+++ b/doc/api-documentation/html/latin1utf16_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>latin1utf16.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>latin1utf16.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef LATIN1UTF16_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define LATIN1UTF16_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_latin1_u_t_f16.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_latin1_u_t_f16.html">Latin1UTF16</a>:<font class="keyword">public</font> SWFilter {
+00030 <font class="keyword">public</font>:
+00031 <a class="code" href="class_latin1_u_t_f16.html">Latin1UTF16</a>();
+00032 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00033 };
+00034
+00035 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/latin1utf8_8cpp-source.html b/doc/api-documentation/html/latin1utf8_8cpp-source.html
new file mode 100644
index 0000000..da81d50
--- /dev/null
+++ b/doc/api-documentation/html/latin1utf8_8cpp-source.html
@@ -0,0 +1,193 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>latin1utf8.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>latin1utf8.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Latin1UTF8 - SWFilter decendant to convert a Latin-1 character to UTF-8</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;latin1utf8.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00012
+00013 Latin1UTF8::Latin1UTF8() {
+00014 }
+00015
+00016
+00017 <font class="keywordtype">char</font> Latin1UTF8::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00018 {
+00019 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from;
+00020 <font class="keywordtype">int</font> len;
+00021
+00022 len = strlen(text) + 1;
+00023 <font class="keywordflow">if</font> (len == maxlen + 1)
+00024 maxlen = (maxlen + 1) * FILTERPAD;
+00025 <font class="comment">// shift string to right of buffer</font>
+00026 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00027 memmove(&amp;text[maxlen - len], text, len);
+00028 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)&amp;text[maxlen - len];
+00029 }
+00030 <font class="keywordflow">else</font>
+00031 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; <font class="comment">// -------------------------------</font>
+00032
+00033
+00034
+00035 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; *from; from++) {
+00036 <font class="keywordflow">if</font> (*from &lt; 0x80) {
+00037 *to++ = *from;
+00038 }
+00039 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from &lt; 0xc0) {
+00040 <font class="keywordflow">switch</font>(*from) {
+00041 <font class="keywordflow">case</font> 0x80: <font class="comment">// '€'</font>
+00042 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00043 *to++ = 0x82; <font class="comment">// '‚'</font>
+00044 *to++ = 0xac; <font class="comment">// '¬'</font>
+00045 <font class="keywordflow">break</font>;
+00046 <font class="keywordflow">case</font> 0x82: <font class="comment">// '‚'</font>
+00047 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00048 *to++ = 0x80; <font class="comment">// '€'</font>
+00049 *to++ = 0x9a; <font class="comment">// 'š'</font>
+00050 <font class="keywordflow">break</font>;
+00051 <font class="keywordflow">case</font> 0x83: <font class="comment">// 'ƒ'</font>
+00052 *to++ = 0xc6; <font class="comment">// 'Æ'</font>
+00053 *to++ = 0x92; <font class="comment">// '’'</font>
+00054 <font class="keywordflow">break</font>;
+00055 <font class="keywordflow">case</font> 0x84: <font class="comment">// '„'</font>
+00056 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00057 *to++ = 0x80; <font class="comment">// '€'</font>
+00058 *to++ = 0x9e; <font class="comment">// 'ž'</font>
+00059 <font class="keywordflow">break</font>;
+00060 <font class="keywordflow">case</font> 0x85: <font class="comment">// '…'</font>
+00061 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00062 *to++ = 0x80; <font class="comment">// '€'</font>
+00063 *to++ = 0xa6; <font class="comment">// '¦'</font>
+00064 <font class="keywordflow">break</font>;
+00065 <font class="keywordflow">case</font> 0x86: <font class="comment">// '†'</font>
+00066 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00067 *to++ = 0x80; <font class="comment">// '€'</font>
+00068 *to++ = 0xa0; <font class="comment">// ' '</font>
+00069 <font class="keywordflow">break</font>;
+00070 <font class="keywordflow">case</font> 0x87: <font class="comment">// '‡'</font>
+00071 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00072 *to++ = 0x80; <font class="comment">// '€'</font>
+00073 *to++ = 0xa1; <font class="comment">// '¡'</font>
+00074 <font class="keywordflow">break</font>;
+00075 <font class="keywordflow">case</font> 0x88: <font class="comment">// 'ˆ'</font>
+00076 *to++ = 0xcb; <font class="comment">// 'Ë'</font>
+00077 *to++ = 0x86; <font class="comment">// '†'</font>
+00078 <font class="keywordflow">break</font>;
+00079 <font class="keywordflow">case</font> 0x89: <font class="comment">// '‰'</font>
+00080 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00081 *to++ = 0x80; <font class="comment">// '€'</font>
+00082 *to++ = 0xb0; <font class="comment">// '°'</font>
+00083 <font class="keywordflow">break</font>;
+00084 <font class="keywordflow">case</font> 0x8A: <font class="comment">// 'Š'</font>
+00085 *to++ = 0xc5; <font class="comment">// 'Å'</font>
+00086 *to++ = 0xa0; <font class="comment">// ' '</font>
+00087 <font class="keywordflow">break</font>;
+00088 <font class="keywordflow">case</font> 0x8B: <font class="comment">// '‹'</font>
+00089 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00090 *to++ = 0x80; <font class="comment">// '€'</font>
+00091 *to++ = 0xb9; <font class="comment">// '¹'</font>
+00092 <font class="keywordflow">break</font>;
+00093 <font class="keywordflow">case</font> 0x8C: <font class="comment">// 'Œ'</font>
+00094 *to++ = 0xc5; <font class="comment">// 'Å'</font>
+00095 *to++ = 0x92; <font class="comment">// '’'</font>
+00096 <font class="keywordflow">break</font>;
+00097 <font class="keywordflow">case</font> 0x8E: <font class="comment">// 'Ž'</font>
+00098 *to++ = 0xc5; <font class="comment">// 'Å'</font>
+00099 *to++ = 0xbd; <font class="comment">// '½'</font>
+00100 <font class="keywordflow">break</font>;
+00101 <font class="keywordflow">case</font> 0x91: <font class="comment">// '‘'</font>
+00102 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00103 *to++ = 0x80; <font class="comment">// '€'</font>
+00104 *to++ = 0x98; <font class="comment">// '˜'</font>
+00105 <font class="keywordflow">break</font>;
+00106 <font class="keywordflow">case</font> 0x92: <font class="comment">// '’'</font>
+00107 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00108 *to++ = 0x80; <font class="comment">// '€'</font>
+00109 *to++ = 0x99; <font class="comment">// '™'</font>
+00110 <font class="keywordflow">break</font>;
+00111 <font class="keywordflow">case</font> 0x93: <font class="comment">// '“'</font>
+00112 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00113 *to++ = 0x80; <font class="comment">// '€'</font>
+00114 *to++ = 0x9c; <font class="comment">// 'œ'</font>
+00115 <font class="keywordflow">break</font>;
+00116 <font class="keywordflow">case</font> 0x94: <font class="comment">// '”'</font>
+00117 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00118 *to++ = 0x80; <font class="comment">// '€'</font>
+00119 *to++ = 0x9d; <font class="comment">// ''</font>
+00120 <font class="keywordflow">break</font>;
+00121 <font class="keywordflow">case</font> 0x95: <font class="comment">// '•'</font>
+00122 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00123 *to++ = 0x80; <font class="comment">// '€'</font>
+00124 *to++ = 0xa2; <font class="comment">// '¢'</font>
+00125 <font class="keywordflow">break</font>;
+00126 <font class="keywordflow">case</font> 0x96: <font class="comment">// '–'</font>
+00127 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00128 *to++ = 0x80; <font class="comment">// '€'</font>
+00129 *to++ = 0x93; <font class="comment">// '“'</font>
+00130 <font class="keywordflow">break</font>;
+00131 <font class="keywordflow">case</font> 0x97: <font class="comment">// '—'</font>
+00132 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00133 *to++ = 0x80; <font class="comment">// '€'</font>
+00134 *to++ = 0x94; <font class="comment">// '”'</font>
+00135 <font class="keywordflow">break</font>;
+00136 <font class="keywordflow">case</font> 0x98: <font class="comment">// '˜'</font>
+00137 *to++ = 0xcb; <font class="comment">// 'Ë'</font>
+00138 *to++ = 0x9c; <font class="comment">// 'œ'</font>
+00139 <font class="keywordflow">break</font>;
+00140 <font class="keywordflow">case</font> 0x99: <font class="comment">// '™'</font>
+00141 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00142 *to++ = 0x84; <font class="comment">// '„'</font>
+00143 *to++ = 0xa2; <font class="comment">// '¢'</font>
+00144 <font class="keywordflow">break</font>;
+00145 <font class="keywordflow">case</font> 0x9A: <font class="comment">// 'š'</font>
+00146 *to++ = 0xc5; <font class="comment">// 'Å'</font>
+00147 *to++ = 0xa1; <font class="comment">// '¡'</font>
+00148 <font class="keywordflow">break</font>;
+00149 <font class="keywordflow">case</font> 0x9B: <font class="comment">// '›'</font>
+00150 *to++ = 0xe2; <font class="comment">// 'â'</font>
+00151 *to++ = 0x80; <font class="comment">// '€'</font>
+00152 *to++ = 0xba; <font class="comment">// 'º'</font>
+00153 <font class="keywordflow">break</font>;
+00154 <font class="keywordflow">case</font> 0x9C: <font class="comment">// 'œ'</font>
+00155 *to++ = 0xc5; <font class="comment">// 'Å'</font>
+00156 *to++ = 0x93; <font class="comment">// '“'</font>
+00157 <font class="keywordflow">break</font>;
+00158 <font class="keywordflow">case</font> 0x9E: <font class="comment">// 'ž'</font>
+00159 *to++ = 0xc5; <font class="comment">// 'Å'</font>
+00160 *to++ = 0xbe; <font class="comment">// '¾'</font>
+00161 <font class="keywordflow">break</font>;
+00162 <font class="keywordflow">case</font> 0x9F: <font class="comment">// 'Ÿ'</font>
+00163 *to++ = 0xc5; <font class="comment">// 'Å'</font>
+00164 *to++ = 0xb8; <font class="comment">// '¸'</font>
+00165 <font class="keywordflow">break</font>;
+00166 <font class="keywordflow">default</font>:
+00167 *to++ = 0xC2;
+00168 *to++ = *from;
+00169 }
+00170 }
+00171 <font class="keywordflow">else</font> {
+00172 *to++ = 0xC3;
+00173 *to++ = (*from - 0x40);
+00174 }
+00175 }
+00176 *to++ = 0;
+00177 *to = 0;
+00178 <font class="keywordflow">return</font> 0;
+00179 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/latin1utf8_8h-source.html b/doc/api-documentation/html/latin1utf8_8h-source.html
new file mode 100644
index 0000000..5291b69
--- /dev/null
+++ b/doc/api-documentation/html/latin1utf8_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>latin1utf8.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>latin1utf8.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef LATIN1UTF8_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define LATIN1UTF8_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_latin1_u_t_f8.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_latin1_u_t_f8.html">Latin1UTF8</a>:<font class="keyword">public</font> SWFilter {
+00030 <font class="keyword">public</font>:
+00031 <a class="code" href="class_latin1_u_t_f8.html">Latin1UTF8</a>();
+00032 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00033 };
+00034
+00035 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/listkey_8cpp-source.html b/doc/api-documentation/html/listkey_8cpp-source.html
new file mode 100644
index 0000000..dd4c941
--- /dev/null
+++ b/doc/api-documentation/html/listkey_8cpp-source.html
@@ -0,0 +1,270 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>listkey.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>listkey.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * listkey.cpp - code for base class 'ListKey'. ListKey is the basis for all</font>
+00003 <font class="comment"> * types of keys that have lists of specified indexes</font>
+00004 <font class="comment"> * (e.g. a list of verses, place, etc.)</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;listkey.h&gt;</font>
+00012
+00013 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *classes[] = {<font class="stringliteral">"ListKey"</font>, <font class="stringliteral">"SWKey"</font>, <font class="stringliteral">"SWObject"</font>, 0};
+00014 <a class="code" href="class_s_w_class.html">SWClass</a> ListKey::classdef(classes);
+00015
+00016 <font class="comment">/******************************************************************************</font>
+00017 <font class="comment"> * ListKey Constructor - initializes instance of ListKey</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> * ENT: ikey - text key</font>
+00020 <font class="comment"> */</font>
+00021
+<a name="l00022"></a><a class="code" href="class_list_key.html#a0">00022</a> <a class="code" href="class_list_key.html#a0">ListKey::ListKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey): <a class="code" href="class_s_w_key.html">SWKey</a>(ikey) {
+00023 arraymax = 0;
+00024 <a class="code" href="class_list_key.html#a4">ClearList</a>();
+00025 init();
+00026 }
+00027
+00028
+00029 <a class="code" href="class_list_key.html#a0">ListKey::ListKey</a>(<a class="code" href="class_list_key.html">ListKey</a> <font class="keyword">const</font> &amp;k) : <a class="code" href="class_s_w_key.html">SWKey</a>(k.keytext) {
+00030 arraymax = k.arraymax;
+00031 arraypos = k.arraypos;
+00032 arraycnt = k.arraycnt;
+00033 array = (arraymax)?(<a class="code" href="class_s_w_key.html">SWKey</a> **)malloc(k.arraymax * <font class="keyword">sizeof</font>(<a class="code" href="class_s_w_key.html">SWKey</a> *)):0;
+00034 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; arraycnt; i++)
+00035 array[i] = k.array[i]-&gt;<a class="code" href="class_s_w_key.html#a3">clone</a>();
+00036 init();
+00037 }
+00038
+00039
+00040 <font class="keywordtype">void</font> ListKey::init() {
+00041 myclass = &amp;classdef;
+00042 }
+00043
+00044
+<a name="l00045"></a><a class="code" href="class_list_key.html#a3">00045</a> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_list_key.html#a3">ListKey::clone</a>()<font class="keyword"> const</font>
+00046 <font class="keyword"></font>{
+00047 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_list_key.html#a0">ListKey</a>(*<font class="keyword">this</font>);
+00048 }
+00049
+00050 <font class="comment">/******************************************************************************</font>
+00051 <font class="comment"> * ListKey Destructor - cleans up instance of ListKey</font>
+00052 <font class="comment"> */</font>
+00053
+<a name="l00054"></a><a class="code" href="class_list_key.html#a2">00054</a> <a class="code" href="class_list_key.html#a2">ListKey::~ListKey</a>()
+00055 {
+00056 <a class="code" href="class_list_key.html#a4">ClearList</a>();
+00057 }
+00058
+00059
+00060 <font class="comment">/******************************************************************************</font>
+00061 <font class="comment"> * ListKey::ClearList - Clears out elements of list</font>
+00062 <font class="comment"> */</font>
+00063
+<a name="l00064"></a><a class="code" href="class_list_key.html#a4">00064</a> <font class="keywordtype">void</font> <a class="code" href="class_list_key.html#a4">ListKey::ClearList</a>()
+00065 {
+00066 <font class="keywordtype">int</font> loop;
+00067
+00068 <font class="keywordflow">if</font> (arraymax) {
+00069 <font class="keywordflow">for</font> (loop = 0; loop &lt; arraycnt; loop++)
+00070 <font class="keyword">delete</font> array[loop];
+00071
+00072 free(array);
+00073 arraymax = 0;
+00074 }
+00075 arraycnt = 0;
+00076 arraypos = 0;
+00077 array = 0;
+00078 }
+00079
+00080
+00081 <font class="comment">/******************************************************************************</font>
+00082 <font class="comment"> * ListKey::copyFrom Equates this ListKey to another ListKey object</font>
+00083 <font class="comment"> *</font>
+00084 <font class="comment"> * ENT: ikey - other ListKey object</font>
+00085 <font class="comment"> */</font>
+00086
+<a name="l00087"></a><a class="code" href="class_list_key.html#a11">00087</a> <font class="keywordtype">void</font> <a class="code" href="class_list_key.html#a11">ListKey::copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_list_key.html">ListKey</a> &amp;ikey) {
+00088 <a class="code" href="class_list_key.html#a4">ClearList</a>();
+00089
+00090 arraymax = ikey.<a class="code" href="class_list_key.html#n1">arraymax</a>;
+00091 arraypos = ikey.<a class="code" href="class_list_key.html#n0">arraypos</a>;
+00092 arraycnt = ikey.<a class="code" href="class_list_key.html#n2">arraycnt</a>;
+00093 array = (arraymax)?(<a class="code" href="class_s_w_key.html">SWKey</a> **)malloc(ikey.<a class="code" href="class_list_key.html#n1">arraymax</a> * <font class="keyword">sizeof</font>(<a class="code" href="class_s_w_key.html">SWKey</a> *)):0;
+00094 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; arraycnt; i++)
+00095 array[i] = ikey.<a class="code" href="class_list_key.html#n3">array</a>[i]-&gt;<a class="code" href="class_s_w_key.html#a3">clone</a>();
+00096
+00097 <a class="code" href="class_list_key.html#a7">SetToElement</a>(0);
+00098 }
+00099
+00100
+00101 <font class="comment">/******************************************************************************</font>
+00102 <font class="comment"> * ListKey::add - Adds an element to the list</font>
+00103 <font class="comment"> */</font>
+00104
+00105 <font class="keywordtype">void</font> ListKey::add(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) {
+00106 <font class="keywordflow">if</font> (++arraycnt &gt; arraymax) {
+00107 array = (<a class="code" href="class_s_w_key.html">SWKey</a> **) ((array) ? realloc(array, (arraycnt + 32) * <font class="keyword">sizeof</font>(<a class="code" href="class_s_w_key.html">SWKey</a> *)) : calloc(arraycnt + 32, sizeof(<a class="code" href="class_s_w_key.html">SWKey</a> *)));
+00108 arraymax = arraycnt + 32;
+00109 }
+00110 array[arraycnt-1] = ikey.<a class="code" href="class_s_w_key.html#a3">clone</a>();
+00111 <a class="code" href="class_list_key.html#a7">SetToElement</a>(arraycnt-1);
+00112 }
+00113
+00114
+00115
+00116 <font class="comment">/******************************************************************************</font>
+00117 <font class="comment"> * ListKey::setPosition(SW_POSITION) - Positions this key</font>
+00118 <font class="comment"> *</font>
+00119 <font class="comment"> * ENT: p - position</font>
+00120 <font class="comment"> *</font>
+00121 <font class="comment"> * RET: *this</font>
+00122 <font class="comment"> */</font>
+00123
+<a name="l00124"></a><a class="code" href="class_list_key.html#a13">00124</a> <font class="keywordtype">void</font> <a class="code" href="class_list_key.html#a13">ListKey::setPosition</a>(SW_POSITION p) {
+00125 <font class="keywordflow">switch</font> (p) {
+00126 <font class="keywordflow">case</font> 1: <font class="comment">// GCC won't compile P_TOP</font>
+00127 <a class="code" href="class_list_key.html#a7">SetToElement</a>(0);
+00128 <font class="keywordflow">break</font>;
+00129 <font class="keywordflow">case</font> 2: <font class="comment">// GCC won't compile P_BOTTOM</font>
+00130 <a class="code" href="class_list_key.html#a7">SetToElement</a>(arraycnt-1);
+00131 <font class="keywordflow">break</font>;
+00132 }
+00133 }
+00134
+00135
+00136 <font class="comment">/******************************************************************************</font>
+00137 <font class="comment"> * ListKey::increment - Increments a number of elements</font>
+00138 <font class="comment"> */</font>
+00139
+<a name="l00140"></a><a class="code" href="class_list_key.html#a15">00140</a> <font class="keywordtype">void</font> <a class="code" href="class_list_key.html#a15">ListKey::increment</a>(<font class="keywordtype">int</font> step) {
+00141 <font class="keywordflow">if</font> (step &lt; 0) {
+00142 <a class="code" href="class_list_key.html#a14">decrement</a>(step*-1);
+00143 <font class="keywordflow">return</font>;
+00144 }
+00145 <a class="code" href="class_s_w_key.html#a6">Error</a>(); <font class="comment">// clear error</font>
+00146 <font class="keywordflow">for</font>(; step &amp;&amp; !<a class="code" href="class_s_w_key.html#a6">Error</a>(); step--) {
+00147 <font class="keywordflow">if</font> (arraypos &lt; arraycnt) {
+00148 (*(array[arraypos]))++;
+00149 <font class="keywordflow">if</font> (array[arraypos]-&gt;Error()) {
+00150 <a class="code" href="class_list_key.html#a7">SetToElement</a>(arraypos+1);
+00151 }
+00152 <font class="keywordflow">else</font> *<font class="keyword">this</font> = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)(*array[arraypos]);
+00153 }
+00154 <font class="keywordflow">else</font> error = KEYERR_OUTOFBOUNDS;
+00155 }
+00156 }
+00157
+00158
+00159 <font class="comment">/******************************************************************************</font>
+00160 <font class="comment"> * ListKey::decrement - Decrements a number of elements</font>
+00161 <font class="comment"> */</font>
+00162
+<a name="l00163"></a><a class="code" href="class_list_key.html#a14">00163</a> <font class="keywordtype">void</font> <a class="code" href="class_list_key.html#a14">ListKey::decrement</a>(<font class="keywordtype">int</font> step) {
+00164 <font class="keywordflow">if</font> (step &lt; 0) {
+00165 <a class="code" href="class_list_key.html#a15">increment</a>(step*-1);
+00166 <font class="keywordflow">return</font>;
+00167 }
+00168 <a class="code" href="class_s_w_key.html#a6">Error</a>(); <font class="comment">// clear error</font>
+00169 <font class="keywordflow">for</font>(; step &amp;&amp; !<a class="code" href="class_s_w_key.html#a6">Error</a>(); step--) {
+00170 <font class="keywordflow">if</font> (arraypos &gt; -1) {
+00171 (*(array[arraypos]))--;
+00172 <font class="keywordflow">if</font> (array[arraypos]-&gt;Error()) {
+00173 <a class="code" href="class_list_key.html#a7">SetToElement</a>(arraypos-1, BOTTOM);
+00174 }
+00175 <font class="keywordflow">else</font> *<font class="keyword">this</font> = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)(*array[arraypos]);
+00176 }
+00177 <font class="keywordflow">else</font> error = KEYERR_OUTOFBOUNDS;
+00178 }
+00179 }
+00180
+00181
+00182 <font class="comment">/******************************************************************************</font>
+00183 <font class="comment"> * ListKey::Count - Returns number of elements in list</font>
+00184 <font class="comment"> */</font>
+00185
+<a name="l00186"></a><a class="code" href="class_list_key.html#a5">00186</a> <font class="keywordtype">int</font> <a class="code" href="class_list_key.html#a5">ListKey::Count</a>() {
+00187 <font class="keywordflow">return</font> arraycnt;
+00188 }
+00189
+00190
+00191 <font class="comment">/******************************************************************************</font>
+00192 <font class="comment"> * ListKey::SetToElement - Sets key to element number</font>
+00193 <font class="comment"> *</font>
+00194 <font class="comment"> * ENT: ielement - element number to set to</font>
+00195 <font class="comment"> *</font>
+00196 <font class="comment"> * RET: error status</font>
+00197 <font class="comment"> */</font>
+00198
+<a name="l00199"></a><a class="code" href="class_list_key.html#a7">00199</a> <font class="keywordtype">char</font> <a class="code" href="class_list_key.html#a7">ListKey::SetToElement</a>(<font class="keywordtype">int</font> ielement, SW_POSITION pos) {
+00200 arraypos = ielement;
+00201 <font class="keywordflow">if</font> (arraypos &gt;= arraycnt) {
+00202 arraypos = (arraycnt&gt;0)?arraycnt - 1:0;
+00203 error = KEYERR_OUTOFBOUNDS;
+00204 }
+00205 <font class="keywordflow">else</font> {
+00206 <font class="keywordflow">if</font> (arraypos &lt; 0) {
+00207 arraypos = 0;
+00208 error = KEYERR_OUTOFBOUNDS;
+00209 }
+00210 <font class="keywordflow">else</font> {
+00211 error = 0;
+00212 }
+00213 }
+00214
+00215 <font class="keywordflow">if</font> (arraycnt) {
+00216 (*array[arraypos]) = pos;
+00217 *<font class="keyword">this</font> = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)(*array[arraypos]);
+00218 }
+00219 <font class="keywordflow">else</font> *<font class="keyword">this</font> = <font class="stringliteral">""</font>;
+00220
+00221 <font class="keywordflow">return</font> error;
+00222 }
+00223
+00224
+00225 <font class="comment">/******************************************************************************</font>
+00226 <font class="comment"> * ListKey::GetElement - Gets a key element number</font>
+00227 <font class="comment"> *</font>
+00228 <font class="comment"> * ENT: pos - element number to get (or default current)</font>
+00229 <font class="comment"> *</font>
+00230 <font class="comment"> * RET: Key or null on error</font>
+00231 <font class="comment"> */</font>
+00232
+<a name="l00233"></a><a class="code" href="class_list_key.html#a8">00233</a> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_list_key.html#a8">ListKey::GetElement</a>(<font class="keywordtype">int</font> pos) {
+00234 <font class="keywordflow">if</font> (pos &gt;=0) {
+00235 <font class="keywordflow">if</font> (pos &gt;=arraycnt)
+00236 error = KEYERR_OUTOFBOUNDS;
+00237 }
+00238 <font class="keywordflow">else</font> pos = arraypos;
+00239 <font class="keywordflow">return</font> (error) ? 0:array[pos];
+00240 }
+00241
+00242
+00243 <font class="comment">/******************************************************************************</font>
+00244 <font class="comment"> * ListKey::Remove - Removes current element from list</font>
+00245 <font class="comment"> */</font>
+00246
+<a name="l00247"></a><a class="code" href="class_list_key.html#a6">00247</a> <font class="keywordtype">void</font> <a class="code" href="class_list_key.html#a6">ListKey::Remove</a>() {
+00248 <font class="keywordflow">if</font> ((arraypos &gt; -1) &amp;&amp; (arraypos &lt; arraycnt)) {
+00249 <font class="keyword">delete</font> array[arraypos];
+00250 <font class="keywordflow">if</font> (arraypos &lt; arraycnt - 1)
+00251 memmove(&amp;array[arraypos], &amp;array[arraypos+1], (arraycnt - arraypos - 1) * <font class="keyword">sizeof</font>(<a class="code" href="class_s_w_key.html">SWKey</a> *));
+00252 arraycnt--;
+00253
+00254 <a class="code" href="class_list_key.html#a7">SetToElement</a>((arraypos)?arraypos-1:0);
+00255 }
+00256 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/listkey_8h-source.html b/doc/api-documentation/html/listkey_8h-source.html
new file mode 100644
index 0000000..2926de3
--- /dev/null
+++ b/doc/api-documentation/html/listkey_8h-source.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>listkey.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>listkey.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * listkey.h - code for base class 'listkey'. listkey is the basis for all</font>
+00003 <font class="comment"> * types of keys for indexing into modules</font>
+00004 <font class="comment"> * (e.g. verse, word,</font>
+00005 <font class="comment"> * place, etc.)</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * $Id: listkey_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00010 <font class="comment"> * CrossWire Bible Society</font>
+00011 <font class="comment"> * P. O. Box 2528</font>
+00012 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00015 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00016 <font class="comment"> * Free Software Foundation version 2.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00019 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00020 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00021 <font class="comment"> * General Public License for more details.</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> */</font>
+00024
+00025 <font class="preprocessor">#ifndef SWLSTKEY_H</font>
+00026 <font class="preprocessor"></font><font class="preprocessor">#define SWLSTKEY_H</font>
+00027 <font class="preprocessor"></font>
+00028 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+<a name="l00036"></a><a class="code" href="class_list_key.html">00036</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_list_key.html">ListKey</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_key.html">SWKey</a> {
+00037
+00038 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
+00039 <font class="keywordtype">void</font> init ();
+00040 <font class="keyword">protected</font>:
+00041 <font class="keywordtype">int</font> arraypos;
+00042 <font class="keywordtype">int</font> arraymax;
+00043 <font class="keywordtype">int</font> arraycnt;
+00044 <a class="code" href="class_s_w_key.html">SWKey</a> **array;
+00045 <font class="keyword">public</font>:
+00050 <a class="code" href="class_list_key.html">ListKey</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey = 0);
+00051 <a class="code" href="class_list_key.html">ListKey</a> (<a class="code" href="class_list_key.html">ListKey</a> <font class="keyword">const</font> &amp;k);
+00054 <font class="keyword">virtual</font> ~ ListKey ();
+00055
+00056 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_key.html#a3">clone</a> () <font class="keyword">const</font>;
+00059 <font class="keyword">virtual</font> <font class="keywordtype">void</font> ClearList ();
+00063 <font class="keyword">virtual</font> <font class="keywordtype">int</font> Count ();
+00066 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Remove ();
+00072 <font class="keyword">virtual</font> <font class="keywordtype">char</font> SetToElement (<font class="keywordtype">int</font> ielement, SW_POSITION = TOP);
+00078 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *GetElement (<font class="keywordtype">int</font> pos = -1);
+<a name="l00082"></a><a class="code" href="class_list_key.html#a9">00082</a> <a class="code" href="class_list_key.html">ListKey</a> &amp; operator &lt;&lt; (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) { add(ikey); <font class="keywordflow">return</font> *<font class="keyword">this</font>; }
+00083 <font class="keyword">virtual</font> <font class="keywordtype">void</font> add(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey);
+00084
+00089 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_list_key.html">ListKey</a> &amp; ikey);
+<a name="l00090"></a><a class="code" href="class_list_key.html#a12">00090</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; ikey) { <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey); }
+00091
+00097 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setPosition(SW_POSITION);
+00100 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a14">decrement</a>(<font class="keywordtype">int</font> step);
+00103 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a15">increment</a>(<font class="keywordtype">int</font> step);
+00104
+00105 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Traversable () { <font class="keywordflow">return</font> 1; }
+<a name="l00106"></a><a class="code" href="class_list_key.html#a17">00106</a> <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a17">Index</a> ()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> arraypos; }
+00107
+<a name="l00112"></a><a class="code" href="class_list_key.html#a18">00112</a> <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a17">Index</a> (<font class="keywordtype">long</font> index) { SetToElement (index); <font class="keywordflow">return</font> <a class="code" href="class_s_w_key.html#a17">Index</a> (); }
+00113
+00114 SWKEY_OPERATORS
+00115 <a class="code" href="class_list_key.html">ListKey</a> &amp; operator =(<font class="keyword">const</font> <a class="code" href="class_list_key.html">ListKey</a> &amp;key) { <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(key); <font class="keywordflow">return</font> *<font class="keyword">this</font>; }
+00116 };
+00117
+00118
+00119 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/localemgr_8cpp-source.html b/doc/api-documentation/html/localemgr_8cpp-source.html
new file mode 100644
index 0000000..5bbcca4
--- /dev/null
+++ b/doc/api-documentation/html/localemgr_8cpp-source.html
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>localemgr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>localemgr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * localemgr.cpp - implementation of class LocaleMgr used to interact with</font>
+00003 <font class="comment"> * registered locales for a sword installation</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: localemgr_8cpp-source.html,v 1.3 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00026
+00027 <font class="preprocessor">#ifndef __GNUC__</font>
+00028 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00029 <font class="preprocessor">#else</font>
+00030 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00031 <font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00032 <font class="preprocessor">#endif</font>
+00033 <font class="preprocessor"></font><font class="preprocessor">#include &lt;sys/stat.h&gt;</font>
+00034 <font class="preprocessor">#include &lt;dirent.h&gt;</font>
+00035
+00036 <font class="preprocessor">#include &lt;swmgr.h&gt;</font>
+00037 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00038
+00039 <font class="preprocessor">#include &lt;localemgr.h&gt;</font>
+00040 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00041
+00042
+<a name="l00043"></a><a class="code" href="class_locale_mgr.html#p0">00043</a> <a class="code" href="class_locale_mgr.html">LocaleMgr</a> <a class="code" href="class_locale_mgr.html#p0">LocaleMgr::systemLocaleMgr</a>;
+00044
+00045
+<a name="l00046"></a><a class="code" href="class_locale_mgr.html#a0">00046</a> <a class="code" href="class_locale_mgr.html#a0">LocaleMgr::LocaleMgr</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *iConfigPath) {
+00047 <font class="keywordtype">char</font> *prefixPath = 0;
+00048 <font class="keywordtype">char</font> *configPath = 0;
+00049 <font class="keywordtype">char</font> configType = 0;
+00050 string path;
+00051
+00052 defaultLocaleName = 0;
+00053
+00054 <font class="keywordtype">char</font> *lang = getenv (<font class="stringliteral">"LANG"</font>);
+00055 <font class="keywordflow">if</font> (lang) {
+00056 <font class="keywordflow">if</font> (strlen(lang) &gt; 0)
+00057 <a class="code" href="class_locale_mgr.html#a6">setDefaultLocaleName</a>(lang);
+00058 <font class="keywordflow">else</font> <a class="code" href="class_locale_mgr.html#a6">setDefaultLocaleName</a>(<font class="stringliteral">"en_us"</font>);
+00059 }
+00060 <font class="keywordflow">else</font> <a class="code" href="class_locale_mgr.html#a6">setDefaultLocaleName</a>(<font class="stringliteral">"en_us"</font>);
+00061
+00062 <font class="keywordflow">if</font> (!iConfigPath)
+00063 SWMgr::findConfig(&amp;configType, &amp;prefixPath, &amp;configPath);
+00064 <font class="keywordflow">else</font> configPath = (<font class="keywordtype">char</font> *)iConfigPath;
+00065
+00066 <font class="keywordflow">if</font> (prefixPath) {
+00067 <font class="keywordflow">switch</font> (configType) {
+00068 <font class="keywordflow">case</font> 2:
+00069 <font class="keywordtype">int</font> i;
+00070 <font class="keywordflow">for</font> (i = strlen(configPath)-1; ((i) &amp;&amp; (configPath[i] != <font class="charliteral">'/'</font>) &amp;&amp; (configPath[i] != <font class="charliteral">'\\'</font>)); i--);
+00071 configPath[i] = 0;
+00072 path = configPath;
+00073 path += <font class="stringliteral">"/"</font>;
+00074 <font class="keywordflow">break</font>;
+00075 <font class="keywordflow">default</font>:
+00076 path = prefixPath;
+00077 <font class="keywordflow">if</font> ((prefixPath[strlen(prefixPath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (prefixPath[strlen(prefixPath)-1] != <font class="charliteral">'/'</font>))
+00078 path += <font class="stringliteral">"/"</font>;
+00079
+00080 <font class="keywordflow">break</font>;
+00081 }
+00082 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"locales.d"</font>)) {
+00083 path += <font class="stringliteral">"locales.d"</font>;
+00084 <a class="code" href="class_locale_mgr.html#a7">loadConfigDir</a>(path.c_str());
+00085 }
+00086 }
+00087
+00088 <font class="keywordflow">if</font> (prefixPath)
+00089 <font class="keyword">delete</font> [] prefixPath;
+00090
+00091 <font class="keywordflow">if</font> (configPath)
+00092 <font class="keyword">delete</font> [] configPath;
+00093 }
+00094
+00095
+<a name="l00096"></a><a class="code" href="class_locale_mgr.html#a1">00096</a> <a class="code" href="class_locale_mgr.html#a1">LocaleMgr::~LocaleMgr</a>() {
+00097 <font class="keywordflow">if</font> (defaultLocaleName)
+00098 <font class="keyword">delete</font> [] defaultLocaleName;
+00099 deleteLocales();
+00100 }
+00101
+00102
+<a name="l00103"></a><a class="code" href="class_locale_mgr.html#a7">00103</a> <font class="keywordtype">void</font> <a class="code" href="class_locale_mgr.html#a7">LocaleMgr::loadConfigDir</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath) {
+00104 DIR *dir;
+00105 <font class="keyword">struct </font>dirent *ent;
+00106 string newmodfile;
+00107 LocaleMap::iterator it;
+00108
+00109 <font class="keywordflow">if</font> ((dir = opendir(ipath))) {
+00110 rewinddir(dir);
+00111 <font class="keywordflow">while</font> ((ent = readdir(dir))) {
+00112 <font class="keywordflow">if</font> ((strcmp(ent-&gt;d_name, <font class="stringliteral">"."</font>)) &amp;&amp; (strcmp(ent-&gt;d_name, <font class="stringliteral">".."</font>))) {
+00113 newmodfile = ipath;
+00114 <font class="keywordflow">if</font> ((ipath[strlen(ipath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (ipath[strlen(ipath)-1] != <font class="charliteral">'/'</font>))
+00115 newmodfile += <font class="stringliteral">"/"</font>;
+00116 newmodfile += ent-&gt;d_name;
+00117 <a class="code" href="class_s_w_locale.html">SWLocale</a> *locale = <font class="keyword">new</font> <a class="code" href="class_s_w_locale.html">SWLocale</a>(newmodfile.c_str());
+00118 <font class="keywordflow">if</font> (locale-&gt;<a class="code" href="class_s_w_locale.html#a2">getName</a>()) {
+00119 it = locales.find(locale-&gt;<a class="code" href="class_s_w_locale.html#a2">getName</a>());
+00120 <font class="keywordflow">if</font> (it != locales.end()) {
+00121 *((*it).second) += *locale;
+00122 <font class="keyword">delete</font> locale;
+00123 }
+00124 <font class="keywordflow">else</font> locales.insert(LocaleMap::value_type(locale-&gt;<a class="code" href="class_s_w_locale.html#a2">getName</a>(), locale));
+00125 }
+00126 <font class="keywordflow">else</font> <font class="keyword">delete</font> locale;
+00127 }
+00128 }
+00129 closedir(dir);
+00130 }
+00131 }
+00132
+00133
+00134 <font class="keywordtype">void</font> LocaleMgr::deleteLocales() {
+00135
+00136 LocaleMap::iterator it;
+00137
+00138 <font class="keywordflow">for</font> (it = locales.begin(); it != locales.end(); it++)
+00139 <font class="keyword">delete</font> (*it).second;
+00140
+00141 locales.erase(locales.begin(), locales.end());
+00142 }
+00143
+00144
+<a name="l00145"></a><a class="code" href="class_locale_mgr.html#a2">00145</a> <a class="code" href="class_s_w_locale.html">SWLocale</a> *<a class="code" href="class_locale_mgr.html#a2">LocaleMgr::getLocale</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name) {
+00146 LocaleMap::iterator it;
+00147
+00148 it = locales.find(name);
+00149 <font class="keywordflow">if</font> (it != locales.end())
+00150 <font class="keywordflow">return</font> (*it).second;
+00151
+00152 <font class="keywordflow">return</font> 0;
+00153 }
+00154
+00155
+<a name="l00156"></a><a class="code" href="class_locale_mgr.html#a3">00156</a> list &lt;string&gt; <a class="code" href="class_locale_mgr.html#a3">LocaleMgr::getAvailableLocales</a>() {
+00157 list &lt;string&gt; retVal;
+00158 <font class="keywordflow">for</font> (LocaleMap::iterator it = locales.begin(); it != locales.end(); it++)
+00159 retVal.push_back((*it).second-&gt;getName());
+00160
+00161 <font class="keywordflow">return</font> retVal;
+00162 }
+00163
+00164
+<a name="l00165"></a><a class="code" href="class_locale_mgr.html#a4">00165</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_locale_mgr.html#a4">LocaleMgr::translate</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *text, <font class="keyword">const</font> <font class="keywordtype">char</font> *localeName) {
+00166 <a class="code" href="class_s_w_locale.html">SWLocale</a> *target;
+00167 <font class="keywordflow">if</font> (!localeName) {
+00168 localeName = <a class="code" href="class_locale_mgr.html#a5">getDefaultLocaleName</a>();
+00169 }
+00170 target = <a class="code" href="class_locale_mgr.html#a2">getLocale</a>(localeName);
+00171 <font class="keywordflow">if</font> (target)
+00172 <font class="keywordflow">return</font> target-&gt;<a class="code" href="class_s_w_locale.html#a4">translate</a>(text);
+00173 <font class="keywordflow">return</font> text;
+00174 }
+00175
+00176
+<a name="l00177"></a><a class="code" href="class_locale_mgr.html#a5">00177</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_locale_mgr.html#a5">LocaleMgr::getDefaultLocaleName</a>() {
+00178 <font class="keywordflow">return</font> defaultLocaleName;
+00179 }
+00180
+00181
+<a name="l00182"></a><a class="code" href="class_locale_mgr.html#a6">00182</a> <font class="keywordtype">void</font> <a class="code" href="class_locale_mgr.html#a6">LocaleMgr::setDefaultLocaleName</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name) {
+00183 stdstr(&amp;defaultLocaleName, name);
+00184 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/localemgr_8h-source.html b/doc/api-documentation/html/localemgr_8h-source.html
new file mode 100644
index 0000000..8e7ab4e
--- /dev/null
+++ b/doc/api-documentation/html/localemgr_8h-source.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>localemgr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>localemgr.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * localemgr.h - definition of class LocaleMgr used to interact with</font>
+00003 <font class="comment"> * registered locales for a sword installation</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: localemgr_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef LOCALEMGR_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define LOCALEMGR_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;string&gt;</font>
+00027 <font class="preprocessor">#include &lt;map&gt;</font>
+00028 <font class="preprocessor">#include &lt;list&gt;</font>
+00029 <font class="preprocessor">#include &lt;swconfig.h&gt;</font>
+00030 <font class="preprocessor">#include &lt;swlocale.h&gt;</font>
+00031
+00032 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00033
+00034 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00035
+00036 <font class="keyword">typedef</font> map &lt; string, SWLocale *, less &lt; string &gt; &gt;LocaleMap;
+00037
+<a name="l00049"></a><a class="code" href="class_locale_mgr.html">00049</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_locale_mgr.html">LocaleMgr</a>
+00050 {
+00051 <font class="keyword">private</font>:
+00052 <font class="keywordtype">void</font> deleteLocales ();
+00053 <font class="keywordtype">char</font> *defaultLocaleName;
+00054
+00055 <font class="keyword">protected</font>:
+00056 LocaleMap locales;
+00057
+00058 <font class="keyword">public</font>:
+00062 <a class="code" href="class_locale_mgr.html">LocaleMgr</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *iConfigPath = 0);
+00063
+00067 <font class="keyword">virtual</font> ~ LocaleMgr ();
+00068
+00074 <font class="keyword">virtual</font> <a class="code" href="class_s_w_locale.html">SWLocale</a> *getLocale (<font class="keyword">const</font> <font class="keywordtype">char</font> *name);
+00075
+00080 <font class="keyword">virtual</font> list &lt; string &gt; getAvailableLocales ();
+00081
+00089 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *translate (<font class="keyword">const</font> <font class="keywordtype">char</font> *text, <font class="keyword">const</font> <font class="keywordtype">char</font> *localeName = 0);
+00090
+00095 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getDefaultLocaleName ();
+00096
+00101 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setDefaultLocaleName (<font class="keyword">const</font> <font class="keywordtype">char</font> *name);
+00102
+00106 <font class="keyword">static</font> <a class="code" href="class_locale_mgr.html">LocaleMgr</a> systemLocaleMgr;
+00107
+00108
+00111 <font class="keyword">virtual</font> <font class="keywordtype">void</font> loadConfigDir(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath);
+00112
+00113 };
+00114 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/lzsscomprs_8cpp-source.html b/doc/api-documentation/html/lzsscomprs_8cpp-source.html
new file mode 100644
index 0000000..6b34b6e
--- /dev/null
+++ b/doc/api-documentation/html/lzsscomprs_8cpp-source.html
@@ -0,0 +1,679 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>lzsscomprs.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>lzsscomprs.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * lzsscomprs.cpp - code for class 'LZSSCompress'- a driver class that</font>
+00003 <font class="comment"> * provides LZSS compression</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;lzsscomprs.h&gt;</font>
+00009
+00010
+00011 <font class="comment">/******************************************************************************</font>
+00012 <font class="comment"> * LZSSCompress Statics</font>
+00013 <font class="comment"> */</font>
+00014
+00015 <font class="comment">// m_ring_buffer is a text buffer. It contains "nodes" of</font>
+00016 <font class="comment">// uncompressed text that can be indexed by position. That is,</font>
+00017 <font class="comment">// a substring of the ring buffer can be indexed by a position</font>
+00018 <font class="comment">// and a length. When decoding, the compressed text may contain</font>
+00019 <font class="comment">// a position in the ring buffer and a count of the number of</font>
+00020 <font class="comment">// bytes from the ring buffer that are to be moved into the</font>
+00021 <font class="comment">// uncompressed buffer. </font>
+00022 <font class="comment">//</font>
+00023 <font class="comment">// This ring buffer is not maintained as part of the compressed</font>
+00024 <font class="comment">// text. Instead, it is reconstructed dynamically. That is,</font>
+00025 <font class="comment">// it starts out empty and gets built as the text is decompressed.</font>
+00026 <font class="comment">//</font>
+00027 <font class="comment">// The ring buffer contain N bytes, with an additional F - 1 bytes</font>
+00028 <font class="comment">// to facilitate string comparison.</font>
+00029
+00030 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> LZSSCompress::m_ring_buffer[N + F - 1];
+00031
+00032 <font class="comment">// m_match_position and m_match_length are set by InsertNode().</font>
+00033 <font class="comment">//</font>
+00034 <font class="comment">// These variables indicate the position in the ring buffer </font>
+00035 <font class="comment">// and the number of characters at that position that match</font>
+00036 <font class="comment">// a given string.</font>
+00037
+00038 <font class="keywordtype">short</font> <font class="keywordtype">int</font> LZSSCompress::m_match_position;
+00039 <font class="keywordtype">short</font> <font class="keywordtype">int</font> LZSSCompress::m_match_length;
+00040
+00041 <font class="comment">// m_lson, m_rson, and m_dad are the Japanese way of referring to</font>
+00042 <font class="comment">// a tree structure. The dad is the parent and it has a right and</font>
+00043 <font class="comment">// left son (child).</font>
+00044 <font class="comment">//</font>
+00045 <font class="comment">// For i = 0 to N-1, m_rson[i] and m_lson[i] will be the right </font>
+00046 <font class="comment">// and left children of node i. </font>
+00047 <font class="comment">//</font>
+00048 <font class="comment">// For i = 0 to N-1, m_dad[i] is the parent of node i.</font>
+00049 <font class="comment">//</font>
+00050 <font class="comment">// For i = 0 to 255, rson[N + i + 1] is the root of the tree for </font>
+00051 <font class="comment">// strings that begin with the character i. Note that this requires </font>
+00052 <font class="comment">// one byte characters.</font>
+00053 <font class="comment">//</font>
+00054 <font class="comment">// These nodes store values of 0...(N-1). Memory requirements</font>
+00055 <font class="comment">// can be reduces by using 2-byte integers instead of full 4-byte</font>
+00056 <font class="comment">// integers (for 32-bit applications). Therefore, these are </font>
+00057 <font class="comment">// defined as "short ints."</font>
+00058
+00059 <font class="keywordtype">short</font> <font class="keywordtype">int</font> LZSSCompress::m_lson[N + 1];
+00060 <font class="keywordtype">short</font> <font class="keywordtype">int</font> LZSSCompress::m_rson[N + 257];
+00061 <font class="keywordtype">short</font> <font class="keywordtype">int</font> LZSSCompress::m_dad[N + 1];
+00062
+00063
+00064 <font class="comment">/******************************************************************************</font>
+00065 <font class="comment"> * LZSSCompress Constructor - Initializes data for instance of LZSSCompress</font>
+00066 <font class="comment"> *</font>
+00067 <font class="comment"> */</font>
+00068
+00069 LZSSCompress::LZSSCompress() : SWCompress() {
+00070 }
+00071
+00072
+00073 <font class="comment">/******************************************************************************</font>
+00074 <font class="comment"> * LZSSCompress Destructor - Cleans up instance of LZSSCompress</font>
+00075 <font class="comment"> */</font>
+00076
+00077 LZSSCompress::~LZSSCompress() {
+00078 }
+00079
+00080
+00081 <font class="comment">/******************************************************************************</font>
+00082 <font class="comment"> * LZSSCompress::InitTree - This function initializes the tree nodes to</font>
+00083 <font class="comment"> * "empty" states. </font>
+00084 <font class="comment"> */</font>
+00085
+00086 <font class="keywordtype">void</font> LZSSCompress::InitTree(<font class="keywordtype">void</font>) {
+00087 <font class="keywordtype">int</font> i;
+00088
+00089 <font class="comment">// For i = 0 to N - 1, m_rson[i] and m_lson[i] will be the right</font>
+00090 <font class="comment">// and left children of node i. These nodes need not be</font>
+00091 <font class="comment">// initialized. However, for debugging purposes, it is nice to</font>
+00092 <font class="comment">// have them initialized. Since this is only used for compression</font>
+00093 <font class="comment">// (not decompression), I don't mind spending the time to do it.</font>
+00094 <font class="comment">//</font>
+00095 <font class="comment">// For the same range of i, m_dad[i] is the parent of node i.</font>
+00096 <font class="comment">// These are initialized to a known value that can represent</font>
+00097 <font class="comment">// a "not used" state.</font>
+00098
+00099 <font class="keywordflow">for</font> (i = 0; i &lt; N; i++) {
+00100 m_lson[i] = NOT_USED;
+00101 m_rson[i] = NOT_USED;
+00102 m_dad[i] = NOT_USED;
+00103 }
+00104
+00105 <font class="comment">// For i = 0 to 255, m_rson[N + i + 1] is the root of the tree</font>
+00106 <font class="comment">// for strings that begin with the character i. This is why</font>
+00107 <font class="comment">// the right child array is larger than the left child array.</font>
+00108 <font class="comment">// These are also initialzied to a "not used" state.</font>
+00109 <font class="comment">//</font>
+00110 <font class="comment">// Note that there are 256 of these, one for each of the possible</font>
+00111 <font class="comment">// 256 characters.</font>
+00112
+00113 <font class="keywordflow">for</font> (i = N + 1; i &lt;= (N + 256); i++) {
+00114 m_rson[i] = NOT_USED;
+00115 }
+00116 }
+00117
+00118
+00119 <font class="comment">/******************************************************************************</font>
+00120 <font class="comment"> * LZSSCompress::InsertNode - This function inserts a string from the ring</font>
+00121 <font class="comment"> * buffer into one of the trees. It loads the</font>
+00122 <font class="comment"> * match position and length member variables</font>
+00123 <font class="comment"> * for the longest match.</font>
+00124 <font class="comment"> * </font>
+00125 <font class="comment"> * The string to be inserted is identified by</font>
+00126 <font class="comment"> * the parameter Pos, A full F bytes are</font>
+00127 <font class="comment"> * inserted. So,</font>
+00128 <font class="comment"> * m_ring_buffer[Pos ... Pos+F-1]</font>
+00129 <font class="comment"> * are inserted.</font>
+00130 <font class="comment"> *</font>
+00131 <font class="comment"> * If the matched length is exactly F, then an</font>
+00132 <font class="comment"> * old node is removed in favor of the new one</font>
+00133 <font class="comment"> * (because the old one will be deleted</font>
+00134 <font class="comment"> * sooner).</font>
+00135 <font class="comment"> *</font>
+00136 <font class="comment"> * Note that Pos plays a dual role. It is</font>
+00137 <font class="comment"> * used as both a position in the ring buffer</font>
+00138 <font class="comment"> * and also as a tree node.</font>
+00139 <font class="comment"> * m_ring_buffer[Pos] defines a character that</font>
+00140 <font class="comment"> * is used to identify a tree node.</font>
+00141 <font class="comment"> *</font>
+00142 <font class="comment"> * ENT: pos - position in the buffer</font>
+00143 <font class="comment"> */</font>
+00144
+00145 <font class="keywordtype">void</font> LZSSCompress::InsertNode(<font class="keywordtype">short</font> <font class="keywordtype">int</font> Pos)
+00146 {
+00147 <font class="keywordtype">short</font> <font class="keywordtype">int</font> i;
+00148 <font class="keywordtype">short</font> <font class="keywordtype">int</font> p;
+00149 <font class="keywordtype">int</font> cmp;
+00150 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> * key;
+00151
+00152 <font class="comment">/*</font>
+00153 <font class="comment"> ASSERT(Pos &gt;= 0);</font>
+00154 <font class="comment"> ASSERT(Pos &lt; N);</font>
+00155 <font class="comment">*/</font>
+00156
+00157 cmp = 1;
+00158 key = &amp;(m_ring_buffer[Pos]);
+00159
+00160 <font class="comment">// The last 256 entries in m_rson contain the root nodes for</font>
+00161 <font class="comment">// strings that begin with a letter. Get an index for the</font>
+00162 <font class="comment">// first letter in this string.</font>
+00163
+00164 p = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) (N + 1 + key[0]);
+00165
+00166 <font class="comment">// Set the left and right tree nodes for this position to "not</font>
+00167 <font class="comment">// used."</font>
+00168
+00169 m_lson[Pos] = NOT_USED;
+00170 m_rson[Pos] = NOT_USED;
+00171
+00172 <font class="comment">// Haven't matched anything yet.</font>
+00173
+00174 m_match_length = 0;
+00175
+00176 <font class="keywordflow">for</font> ( ; ; ) {
+00177 <font class="keywordflow">if</font> (cmp &gt;= 0) {
+00178 <font class="keywordflow">if</font> (m_rson[p] != NOT_USED) {
+00179 p = m_rson[p];
+00180 }
+00181 <font class="keywordflow">else</font> {
+00182 m_rson[p] = Pos;
+00183 m_dad[Pos] = p;
+00184 <font class="keywordflow">return</font>;
+00185 }
+00186 }
+00187 <font class="keywordflow">else</font> {
+00188 <font class="keywordflow">if</font> (m_lson[p] != NOT_USED) {
+00189 p = m_lson[p];
+00190 }
+00191 <font class="keywordflow">else</font> {
+00192 m_lson[p] = Pos;
+00193 m_dad[Pos] = p;
+00194 <font class="keywordflow">return</font>;
+00195 }
+00196 }
+00197
+00198 <font class="comment">// Should we go to the right or the left to look for the</font>
+00199 <font class="comment">// next match?</font>
+00200
+00201 <font class="keywordflow">for</font> (i = 1; i &lt; F; i++) {
+00202 cmp = key[i] - m_ring_buffer[p + i];
+00203 <font class="keywordflow">if</font> (cmp != 0)
+00204 <font class="keywordflow">break</font>;
+00205 }
+00206
+00207 <font class="keywordflow">if</font> (i &gt; m_match_length) {
+00208 m_match_position = p;
+00209 m_match_length = i;
+00210
+00211 <font class="keywordflow">if</font> (i &gt;= F)
+00212 <font class="keywordflow">break</font>;
+00213 }
+00214 }
+00215
+00216 m_dad[Pos] = m_dad[p];
+00217 m_lson[Pos] = m_lson[p];
+00218 m_rson[Pos] = m_rson[p];
+00219
+00220 m_dad[ m_lson[p] ] = Pos;
+00221 m_dad[ m_rson[p] ] = Pos;
+00222
+00223 <font class="keywordflow">if</font> (m_rson[ m_dad[p] ] == p) {
+00224 m_rson[ m_dad[p] ] = Pos;
+00225 }
+00226 <font class="keywordflow">else</font> {
+00227 m_lson[ m_dad[p] ] = Pos;
+00228 }
+00229
+00230 <font class="comment">// Remove "p"</font>
+00231
+00232 m_dad[p] = NOT_USED;
+00233 }
+00234
+00235
+00236 <font class="comment">/******************************************************************************</font>
+00237 <font class="comment"> * LZSSCompress::DeleteNode - This function removes the node "Node" from the</font>
+00238 <font class="comment"> * tree.</font>
+00239 <font class="comment"> *</font>
+00240 <font class="comment"> * ENT: node - node to be removed</font>
+00241 <font class="comment"> */</font>
+00242
+00243 <font class="keywordtype">void</font> LZSSCompress::DeleteNode(<font class="keywordtype">short</font> <font class="keywordtype">int</font> Node)
+00244 {
+00245 <font class="keywordtype">short</font> <font class="keywordtype">int</font> q;
+00246
+00247 <font class="comment">/*</font>
+00248 <font class="comment"> ASSERT(Node &gt;= 0);</font>
+00249 <font class="comment"> ASSERT(Node &lt; (N+1));</font>
+00250 <font class="comment">*/</font>
+00251
+00252 <font class="keywordflow">if</font> (m_dad[Node] == NOT_USED) { <font class="comment">// not in tree, nothing to do</font>
+00253 <font class="keywordflow">return</font>;
+00254 }
+00255
+00256 <font class="keywordflow">if</font> (m_rson[Node] == NOT_USED) {
+00257 q = m_lson[Node];
+00258 }
+00259 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (m_lson[Node] == NOT_USED) {
+00260 q = m_rson[Node];
+00261 }
+00262 <font class="keywordflow">else</font> {
+00263 q = m_lson[Node];
+00264 <font class="keywordflow">if</font> (m_rson[q] != NOT_USED) {
+00265 <font class="keywordflow">do</font> {
+00266 q = m_rson[q];
+00267 } <font class="keywordflow">while</font> (m_rson[q] != NOT_USED);
+00268
+00269 m_rson[ m_dad[q] ] = m_lson[q];
+00270 m_dad[ m_lson[q] ] = m_dad[q];
+00271 m_lson[q] = m_lson[Node];
+00272 m_dad[ m_lson[Node] ] = q;
+00273 }
+00274
+00275 m_rson[q] = m_rson[Node];
+00276 m_dad[ m_rson[Node] ] = q;
+00277 }
+00278
+00279 m_dad[q] = m_dad[Node];
+00280
+00281 <font class="keywordflow">if</font> (m_rson[ m_dad[Node] ] == Node) {
+00282 m_rson[ m_dad[Node] ] = q;
+00283 }
+00284 <font class="keywordflow">else</font> {
+00285 m_lson[ m_dad[Node] ] = q;
+00286 }
+00287
+00288 m_dad[Node] = NOT_USED;
+00289 }
+00290
+00291
+00292 <font class="comment">/******************************************************************************</font>
+00293 <font class="comment"> * LZSSCompress::Encode - This function "encodes" the input stream into the</font>
+00294 <font class="comment"> * output stream.</font>
+00295 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00296 <font class="comment"> * used to separate this method from the actual</font>
+00297 <font class="comment"> * i/o.</font>
+00298 <font class="comment"> * NOTE: must set zlen for parent class to know length of</font>
+00299 <font class="comment"> * compressed buffer.</font>
+00300 <font class="comment"> */</font>
+00301
+00302 <font class="keywordtype">void</font> LZSSCompress::Encode(<font class="keywordtype">void</font>)
+00303 {
+00304 <font class="keywordtype">short</font> <font class="keywordtype">int</font> i; <font class="comment">// an iterator</font>
+00305 <font class="keywordtype">short</font> <font class="keywordtype">int</font> r; <font class="comment">// node number in the binary tree</font>
+00306 <font class="keywordtype">short</font> <font class="keywordtype">int</font> s; <font class="comment">// position in the ring buffer</font>
+00307 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> <font class="keywordtype">int</font> len; <font class="comment">// len of initial string</font>
+00308 <font class="keywordtype">short</font> <font class="keywordtype">int</font> last_match_length; <font class="comment">// length of last match</font>
+00309 <font class="keywordtype">short</font> <font class="keywordtype">int</font> code_buf_pos; <font class="comment">// position in the output buffer</font>
+00310 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> code_buf[17]; <font class="comment">// the output buffer</font>
+00311 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> mask; <font class="comment">// bit mask for byte 0 of out buf</font>
+00312 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> c; <font class="comment">// character read from string</font>
+00313
+00314 <font class="comment">// Start with a clean tree.</font>
+00315
+00316 InitTree();
+00317 direct = 0; <font class="comment">// set direction needed by parent [Get|Send]Chars()</font>
+00318
+00319 <font class="comment">// code_buf[0] works as eight flags. A "1" represents that the</font>
+00320 <font class="comment">// unit is an unencoded letter (1 byte), and a "0" represents</font>
+00321 <font class="comment">// that the next unit is a &lt;position,length&gt; pair (2 bytes).</font>
+00322 <font class="comment">//</font>
+00323 <font class="comment">// code_buf[1..16] stores eight units of code. Since the best</font>
+00324 <font class="comment">// we can do is store eight &lt;position,length&gt; pairs, at most 16 </font>
+00325 <font class="comment">// bytes are needed to store this.</font>
+00326 <font class="comment">//</font>
+00327 <font class="comment">// This is why the maximum size of the code buffer is 17 bytes.</font>
+00328
+00329 code_buf[0] = 0;
+00330 code_buf_pos = 1;
+00331
+00332 <font class="comment">// Mask iterates over the 8 bits in the code buffer. The first</font>
+00333 <font class="comment">// character ends up being stored in the low bit.</font>
+00334 <font class="comment">//</font>
+00335 <font class="comment">// bit 8 7 6 5 4 3 2 1</font>
+00336 <font class="comment">// | |</font>
+00337 <font class="comment">// | first sequence in code buffer</font>
+00338 <font class="comment">// |</font>
+00339 <font class="comment">// last sequence in code buffer </font>
+00340
+00341 mask = 1;
+00342
+00343 s = 0;
+00344 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) N - (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) F;
+00345
+00346 <font class="comment">// Initialize the ring buffer with spaces...</font>
+00347
+00348 <font class="comment">// Note that the last F bytes of the ring buffer are not filled.</font>
+00349 <font class="comment">// This is because those F bytes will be filled in immediately</font>
+00350 <font class="comment">// with bytes from the input stream.</font>
+00351
+00352 memset(m_ring_buffer, <font class="charliteral">' '</font>, N - F);
+00353
+00354 <font class="comment">// Read F bytes into the last F bytes of the ring buffer.</font>
+00355 <font class="comment">//</font>
+00356 <font class="comment">// This function loads the buffer with X characters and returns</font>
+00357 <font class="comment">// the actual amount loaded.</font>
+00358
+00359 len = GetChars((<font class="keywordtype">char</font> *) &amp;(m_ring_buffer[r]), F);
+00360
+00361 <font class="comment">// Make sure there is something to be compressed.</font>
+00362
+00363 <font class="keywordflow">if</font> (len == 0)
+00364 <font class="keywordflow">return</font>;
+00365
+00366 <font class="comment">// Insert the F strings, each of which begins with one or more</font>
+00367 <font class="comment">// 'space' characters. Note the order in which these strings</font>
+00368 <font class="comment">// are inserted. This way, degenerate trees will be less likely</font>
+00369 <font class="comment">// to occur.</font>
+00370
+00371 <font class="keywordflow">for</font> (i = 1; i &lt;= F; i++) {
+00372 InsertNode((<font class="keywordtype">short</font> <font class="keywordtype">int</font>) (r - i));
+00373 }
+00374
+00375 <font class="comment">// Finally, insert the whole string just read. The</font>
+00376 <font class="comment">// member variables match_length and match_position are set.</font>
+00377
+00378 InsertNode(r);
+00379
+00380 <font class="comment">// Now that we're preloaded, continue till done.</font>
+00381
+00382 <font class="keywordflow">do</font> {
+00383
+00384 <font class="comment">// m_match_length may be spuriously long near the end of</font>
+00385 <font class="comment">// text.</font>
+00386
+00387 <font class="keywordflow">if</font> (m_match_length &gt; len) {
+00388 m_match_length = len;
+00389 }
+00390
+00391 <font class="comment">// Is it cheaper to store this as a single character? If so,</font>
+00392 <font class="comment">// make it so.</font>
+00393
+00394 <font class="keywordflow">if</font> (m_match_length &lt; THRESHOLD) {
+00395 <font class="comment">// Send one character. Remember that code_buf[0] is the</font>
+00396 <font class="comment">// set of flags for the next eight items.</font>
+00397
+00398 m_match_length = 1;
+00399 code_buf[0] |= mask;
+00400 code_buf[code_buf_pos++] = m_ring_buffer[r];
+00401 }
+00402
+00403 <font class="comment">// Otherwise, we do indeed have a string that can be stored</font>
+00404 <font class="comment">// compressed to save space.</font>
+00405
+00406 <font class="keywordflow">else</font> {
+00407 <font class="comment">// The next 16 bits need to contain the position (12 bits)</font>
+00408 <font class="comment">// and the length (4 bits).</font>
+00409
+00410 code_buf[code_buf_pos++] = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) m_match_position;
+00411 code_buf[code_buf_pos++] = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) (
+00412 ((m_match_position &gt;&gt; 4) &amp; 0xf0) |
+00413 (m_match_length - THRESHOLD) );
+00414 }
+00415
+00416 <font class="comment">// Shift the mask one bit to the left so that it will be ready</font>
+00417 <font class="comment">// to store the new bit.</font>
+00418
+00419 mask = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) (mask &lt;&lt; 1);
+00420
+00421 <font class="comment">// If the mask is now 0, then we know that we have a full set</font>
+00422 <font class="comment">// of flags and items in the code buffer. These need to be</font>
+00423 <font class="comment">// output.</font>
+00424
+00425 <font class="keywordflow">if</font> (!mask) {
+00426 <font class="comment">// code_buf is the buffer of characters to be output.</font>
+00427 <font class="comment">// code_buf_pos is the number of characters it contains.</font>
+00428
+00429 SendChars((<font class="keywordtype">char</font> *) code_buf, code_buf_pos);
+00430
+00431 <font class="comment">// Reset for next buffer...</font>
+00432
+00433 code_buf[0] = 0;
+00434 code_buf_pos = 1;
+00435 mask = 1;
+00436 }
+00437
+00438 last_match_length = m_match_length;
+00439
+00440 <font class="comment">// Delete old strings and read new bytes...</font>
+00441
+00442 <font class="keywordflow">for</font> (i = 0; i &lt; last_match_length; i++) {
+00443 <font class="comment">// Get next character...</font>
+00444
+00445 <font class="keywordflow">if</font> (GetChars((<font class="keywordtype">char</font> *) &amp;c, 1) != 1)
+00446 <font class="keywordflow">break</font>;
+00447
+00448 <font class="comment">// Delete "old strings"</font>
+00449
+00450 DeleteNode(s);
+00451
+00452 <font class="comment">// Put this character into the ring buffer.</font>
+00453 <font class="comment">// </font>
+00454 <font class="comment">// The original comment here says "If the position is near</font>
+00455 <font class="comment">// the end of the buffer, extend the buffer to make</font>
+00456 <font class="comment">// string comparison easier."</font>
+00457 <font class="comment">//</font>
+00458 <font class="comment">// That's a little misleading, because the "end" of the </font>
+00459 <font class="comment">// buffer is really what we consider to be the "beginning"</font>
+00460 <font class="comment">// of the buffer, that is, positions 0 through F.</font>
+00461 <font class="comment">//</font>
+00462 <font class="comment">// The idea is that the front end of the buffer is duplicated</font>
+00463 <font class="comment">// into the back end so that when you're looking at characters</font>
+00464 <font class="comment">// at the back end of the buffer, you can index ahead (beyond</font>
+00465 <font class="comment">// the normal end of the buffer) and see the characters</font>
+00466 <font class="comment">// that are at the front end of the buffer wihtout having</font>
+00467 <font class="comment">// to adjust the index.</font>
+00468 <font class="comment">//</font>
+00469 <font class="comment">// That is...</font>
+00470 <font class="comment">//</font>
+00471 <font class="comment">// 1234xxxxxxxxxxxxxxxxxxxxxxxxxxxxx1234</font>
+00472 <font class="comment">// | | |</font>
+00473 <font class="comment">// position 0 end of buffer |</font>
+00474 <font class="comment">// |</font>
+00475 <font class="comment">// duplicate of front of buffer</font>
+00476
+00477 m_ring_buffer[s] = c;
+00478
+00479 <font class="keywordflow">if</font> (s &lt; F - 1) {
+00480 m_ring_buffer[s + N] = c;
+00481 }
+00482
+00483 <font class="comment">// Increment the position, and wrap around when we're at</font>
+00484 <font class="comment">// the end. Note that this relies on N being a power of 2.</font>
+00485
+00486 s = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (s + 1) &amp; (N - 1) );
+00487 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00488
+00489 <font class="comment">// Register the string that is found in </font>
+00490 <font class="comment">// m_ring_buffer[r..r+F-1].</font>
+00491
+00492 InsertNode(r);
+00493 }
+00494
+00495 <font class="comment">// If we didn't quit because we hit the last_match_length,</font>
+00496 <font class="comment">// then we must have quit because we ran out of characters</font>
+00497 <font class="comment">// to process.</font>
+00498
+00499 <font class="keywordflow">while</font> (i++ &lt; last_match_length) {
+00500 DeleteNode(s);
+00501
+00502 s = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (s + 1) &amp; (N - 1) );
+00503 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00504
+00505 <font class="comment">// Note that len hitting 0 is the key that causes the</font>
+00506 <font class="comment">// do...while() to terminate. This is the only place</font>
+00507 <font class="comment">// within the loop that len is modified.</font>
+00508 <font class="comment">//</font>
+00509 <font class="comment">// Its original value is F (or a number less than F for</font>
+00510 <font class="comment">// short strings).</font>
+00511
+00512 <font class="keywordflow">if</font> (--len) {
+00513 InsertNode(r); <font class="comment">/* buffer may not be empty. */</font>
+00514 }
+00515 }
+00516
+00517 <font class="comment">// End of do...while() loop. Continue processing until there</font>
+00518 <font class="comment">// are no more characters to be compressed. The variable</font>
+00519 <font class="comment">// "len" is used to signal this condition.</font>
+00520 } <font class="keywordflow">while</font> (len &gt; 0);
+00521
+00522 <font class="comment">// There could still be something in the output buffer. Send it</font>
+00523 <font class="comment">// now.</font>
+00524
+00525 <font class="keywordflow">if</font> (code_buf_pos &gt; 1) {
+00526 <font class="comment">// code_buf is the encoded string to send.</font>
+00527 <font class="comment">// code_buf_ptr is the number of characters.</font>
+00528
+00529 SendChars((<font class="keywordtype">char</font> *) code_buf, code_buf_pos);
+00530 }
+00531
+00532
+00533 <font class="comment">// must set zlen for parent class to know length of compressed buffer</font>
+00534 zlen = zpos;
+00535 }
+00536
+00537
+00538 <font class="comment">/******************************************************************************</font>
+00539 <font class="comment"> * LZSSCompress::Decode - This function "decodes" the input stream into the</font>
+00540 <font class="comment"> * output stream.</font>
+00541 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00542 <font class="comment"> * used to separate this method from the actual</font>
+00543 <font class="comment"> * i/o.</font>
+00544 <font class="comment"> */</font>
+00545
+00546 <font class="keywordtype">void</font> LZSSCompress::Decode(<font class="keywordtype">void</font>)
+00547 {
+00548 <font class="keywordtype">int</font> k;
+00549 <font class="keywordtype">int</font> r; <font class="comment">// node number</font>
+00550 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> c[F]; <font class="comment">// an array of chars</font>
+00551 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> flags; <font class="comment">// 8 bits of flags</font>
+00552 <font class="keywordtype">int</font> flag_count; <font class="comment">// which flag we're on</font>
+00553 <font class="keywordtype">short</font> <font class="keywordtype">int</font> pos; <font class="comment">// position in the ring buffer</font>
+00554 <font class="keywordtype">short</font> <font class="keywordtype">int</font> len; <font class="comment">// number of chars in ring buffer</font>
+00555 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> totalLen = 0;
+00556
+00557 direct = 1; <font class="comment">// set direction needed by parent [Get|Send]Chars()</font>
+00558
+00559 <font class="comment">// Initialize the ring buffer with a common string.</font>
+00560 <font class="comment">//</font>
+00561 <font class="comment">// Note that the last F bytes of the ring buffer are not filled.</font>
+00562
+00563 memset(m_ring_buffer, <font class="charliteral">' '</font>, N - F);
+00564
+00565 r = N - F;
+00566
+00567 flags = (char) 0;
+00568 flag_count = 0;
+00569
+00570 <font class="keywordflow">for</font> ( ; ; ) {
+00571
+00572 <font class="comment">// If there are more bits of interest in this flag, then</font>
+00573 <font class="comment">// shift that next interesting bit into the 1's position.</font>
+00574 <font class="comment">//</font>
+00575 <font class="comment">// If this flag has been exhausted, the next byte must </font>
+00576 <font class="comment">// be a flag.</font>
+00577
+00578 <font class="keywordflow">if</font> (flag_count &gt; 0) {
+00579 flags = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) (flags &gt;&gt; 1);
+00580 flag_count--;
+00581 }
+00582 <font class="keywordflow">else</font> {
+00583 <font class="comment">// Next byte must be a flag.</font>
+00584
+00585 <font class="keywordflow">if</font> (GetChars((<font class="keywordtype">char</font> *) &amp;flags, 1) != 1)
+00586 <font class="keywordflow">break</font>;
+00587
+00588 <font class="comment">// Set the flag counter. While at first it might appear</font>
+00589 <font class="comment">// that this should be an 8 since there are 8 bits in the</font>
+00590 <font class="comment">// flag, it should really be a 7 because the shift must</font>
+00591 <font class="comment">// be performed 7 times in order to see all 8 bits.</font>
+00592
+00593 flag_count = 7;
+00594 }
+00595
+00596 <font class="comment">// If the low order bit of the flag is now set, then we know</font>
+00597 <font class="comment">// that the next byte is a single, unencoded character.</font>
+00598
+00599 <font class="keywordflow">if</font> (flags &amp; 1) {
+00600 <font class="keywordflow">if</font> (GetChars((<font class="keywordtype">char</font> *) c, 1) != 1)
+00601 <font class="keywordflow">break</font>;
+00602
+00603 <font class="keywordflow">if</font> (SendChars((<font class="keywordtype">char</font> *) c, 1) != 1) {
+00604 totalLen++;
+00605 <font class="keywordflow">break</font>;
+00606 }
+00607
+00608 <font class="comment">// Add to buffer, and increment to next spot. Wrap at end.</font>
+00609
+00610 m_ring_buffer[r] = c[0];
+00611 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00612 }
+00613
+00614 <font class="comment">// Otherwise, we know that the next two bytes are a</font>
+00615 <font class="comment">// &lt;position,length&gt; pair. The position is in 12 bits and</font>
+00616 <font class="comment">// the length is in 4 bits.</font>
+00617
+00618 <font class="keywordflow">else</font> {
+00619 <font class="comment">// Original code:</font>
+00620 <font class="comment">// if ((i = getc(infile)) == EOF)</font>
+00621 <font class="comment">// break;</font>
+00622 <font class="comment">// if ((j = getc(infile)) == EOF)</font>
+00623 <font class="comment">// break;</font>
+00624 <font class="comment">// i |= ((j &amp; 0xf0) &lt;&lt; 4); </font>
+00625 <font class="comment">// j = (j &amp; 0x0f) + THRESHOLD;</font>
+00626 <font class="comment">//</font>
+00627 <font class="comment">// I've modified this to only make one input call, and</font>
+00628 <font class="comment">// have changed the variable names to something more</font>
+00629 <font class="comment">// obvious.</font>
+00630
+00631 <font class="keywordflow">if</font> (GetChars((<font class="keywordtype">char</font> *) c, 2) != 2)
+00632 <font class="keywordflow">break</font>;
+00633
+00634 <font class="comment">// Convert these two characters into the position and</font>
+00635 <font class="comment">// length. Note that the length is always at least</font>
+00636 <font class="comment">// THRESHOLD, which is why we're able to get a length</font>
+00637 <font class="comment">// of 18 out of only 4 bits.</font>
+00638
+00639 pos = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( c[0] | ((c[1] &amp; 0xf0) &lt;&lt; 4) );
+00640
+00641 len = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (c[1] &amp; 0x0f) + THRESHOLD );
+00642
+00643 <font class="comment">// There are now "len" characters at position "pos" in</font>
+00644 <font class="comment">// the ring buffer that can be pulled out. Note that</font>
+00645 <font class="comment">// len is never more than F.</font>
+00646
+00647 <font class="keywordflow">for</font> (k = 0; k &lt; len; k++) {
+00648 c[k] = m_ring_buffer[(pos + k) &amp; (N - 1)];
+00649
+00650 <font class="comment">// Add to buffer, and increment to next spot. Wrap at end.</font>
+00651
+00652 m_ring_buffer[r] = c[k];
+00653 r = (<font class="keywordtype">short</font> <font class="keywordtype">int</font>) ( (r + 1) &amp; (N - 1) );
+00654 }
+00655
+00656 <font class="comment">// Add the "len" :characters to the output stream.</font>
+00657
+00658 <font class="keywordflow">if</font> (SendChars((<font class="keywordtype">char</font> *) c, len) != (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font>)len) {
+00659 totalLen += len;
+00660 <font class="keywordflow">break</font>;
+00661 }
+00662 }
+00663 }
+00664 slen = totalLen;
+00665 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/lzsscomprs_8h-source.html b/doc/api-documentation/html/lzsscomprs_8h-source.html
new file mode 100644
index 0000000..0fe73f6
--- /dev/null
+++ b/doc/api-documentation/html/lzsscomprs_8h-source.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>lzsscomprs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>lzsscomprs.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * lzsscomprs.h - definition of Class SWCompress used for data compression</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: lzsscomprs_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef LZSSCOMPRS_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define LZSSCOMPRS_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+00029 <font class="comment">// The following are constant sizes used by the compression algorithm.</font>
+00030 <font class="comment">//</font>
+00031 <font class="comment">// N - This is the size of the ring buffer. It is set</font>
+00032 <font class="comment">// to 4K. It is important to note that a position</font>
+00033 <font class="comment">// within the ring buffer requires 12 bits. </font>
+00034 <font class="comment">//</font>
+00035 <font class="comment">// F - This is the maximum length of a character sequence</font>
+00036 <font class="comment">// that can be taken from the ring buffer. It is set</font>
+00037 <font class="comment">// to 18. Note that a length must be 3 before it is</font>
+00038 <font class="comment">// worthwhile to store a position/length pair, so the</font>
+00039 <font class="comment">// length can be encoded in only 4 bits. Or, put yet</font>
+00040 <font class="comment">// another way, it is not necessary to encode a length</font>
+00041 <font class="comment">// of 0-18, it is necessary to encode a length of</font>
+00042 <font class="comment">// 3-18, which requires 4 bits.</font>
+00043 <font class="comment">// </font>
+00044 <font class="comment">// THRESHOLD - It takes 2 bytes to store an offset and</font>
+00045 <font class="comment">// a length. If a character sequence only</font>
+00046 <font class="comment">// requires 1 or 2 characters to store </font>
+00047 <font class="comment">// uncompressed, then it is better to store</font>
+00048 <font class="comment">// it uncompressed than as an offset into</font>
+00049 <font class="comment">// the ring buffer.</font>
+00050 <font class="comment">//</font>
+00051 <font class="comment">// Note that the 12 bits used to store the position and the 4 bits</font>
+00052 <font class="comment">// used to store the length equal a total of 16 bits, or 2 bytes.</font>
+00053
+00054 <font class="preprocessor">#define N 4096</font>
+00055 <font class="preprocessor"></font><font class="preprocessor">#define F 18</font>
+00056 <font class="preprocessor"></font><font class="preprocessor">#define THRESHOLD 3</font>
+00057 <font class="preprocessor"></font><font class="preprocessor">#define NOT_USED N</font>
+00058 <font class="preprocessor"></font>
+00059
+00060
+00061 <font class="keyword">class </font>SWDLLEXPORT LZSSCompress:<font class="keyword">public</font> SWCompress
+00062 {
+00063 <font class="keyword">static</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> m_ring_buffer[N + F - 1];
+00064 <font class="keyword">static</font> <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_match_position;
+00065 <font class="keyword">static</font> <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_match_length;
+00066 <font class="keyword">static</font> <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_lson[N + 1];
+00067 <font class="keyword">static</font> <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_rson[N + 257];
+00068 <font class="keyword">static</font> <font class="keywordtype">short</font> <font class="keywordtype">int</font> m_dad[N + 1];
+00069 <font class="keywordtype">void</font> InitTree ();
+00070 <font class="keywordtype">void</font> InsertNode (<font class="keywordtype">short</font> <font class="keywordtype">int</font> Pos);
+00071 <font class="keywordtype">void</font> DeleteNode (<font class="keywordtype">short</font> <font class="keywordtype">int</font> Node);
+00072 <font class="keyword">public</font>:
+00073 LZSSCompress ();
+00074 <font class="keyword">virtual</font> ~ LZSSCompress ();
+00075 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Encode (<font class="keywordtype">void</font>);
+00076 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Decode (<font class="keywordtype">void</font>);
+00077 };
+00078
+00079 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/markupfiltmgr_8cpp-source.html b/doc/api-documentation/html/markupfiltmgr_8cpp-source.html
new file mode 100644
index 0000000..d1934ab
--- /dev/null
+++ b/doc/api-documentation/html/markupfiltmgr_8cpp-source.html
@@ -0,0 +1,250 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>markupfiltmgr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>markupfiltmgr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swmarkupmgr.cpp - implementaion of class MarkupFilterMgr, subclass of</font>
+00003 <font class="comment"> * used to transcode all module text to a requested</font>
+00004 <font class="comment"> * markup.</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#include &lt;thmlplain.h&gt;</font>
+00023 <font class="preprocessor">#include &lt;gbfplain.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;thmlgbf.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;gbfthml.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;thmlhtml.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;gbfhtml.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;plainhtml.h&gt;</font>
+00029 <font class="preprocessor">#include &lt;thmlhtmlhref.h&gt;</font>
+00030 <font class="preprocessor">#include &lt;gbfhtmlhref.h&gt;</font>
+00031 <font class="preprocessor">#include &lt;thmlrtf.h&gt;</font>
+00032 <font class="preprocessor">#include &lt;gbfrtf.h&gt;</font>
+00033 <font class="preprocessor">#include &lt;gbfosis.h&gt;</font>
+00034 <font class="preprocessor">#include &lt;thmlosis.h&gt;</font>
+00035
+00036 <font class="preprocessor">#include &lt;markupfiltmgr.h&gt;</font>
+00037
+00038 <font class="preprocessor">#include &lt;swmgr.h&gt;</font>
+00039
+00040
+00041 <font class="comment">/******************************************************************************</font>
+00042 <font class="comment"> * MarkupFilterMgr Constructor - initializes instance of MarkupFilterMgr</font>
+00043 <font class="comment"> *</font>
+00044 <font class="comment"> * ENT:</font>
+00045 <font class="comment"> * enc - Encoding format to emit</font>
+00046 <font class="comment"> * mark - Markup format to emit</font>
+00047 <font class="comment"> */</font>
+00048
+<a name="l00049"></a><a class="code" href="class_markup_filter_mgr.html#a0">00049</a> <a class="code" href="class_markup_filter_mgr.html#a0">MarkupFilterMgr::MarkupFilterMgr</a> (<font class="keywordtype">char</font> mark, <font class="keywordtype">char</font> enc)
+00050 : <a class="code" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a>(enc) {
+00051
+00052 markup = mark;
+00053
+00054 CreateFilters(markup);
+00055 }
+00056
+00057
+00058 <font class="comment">/******************************************************************************</font>
+00059 <font class="comment"> * MarkupFilterMgr Destructor - Cleans up instance of MarkupFilterMgr</font>
+00060 <font class="comment"> */</font>
+00061
+<a name="l00062"></a><a class="code" href="class_markup_filter_mgr.html#a1">00062</a> <a class="code" href="class_markup_filter_mgr.html#a1">MarkupFilterMgr::~MarkupFilterMgr</a>() {
+00063 <font class="keywordflow">if</font> (fromthml)
+00064 <font class="keyword">delete</font> (fromthml);
+00065 <font class="keywordflow">if</font> (fromgbf)
+00066 <font class="keyword">delete</font> (fromgbf);
+00067 <font class="keywordflow">if</font> (fromplain)
+00068 <font class="keyword">delete</font> (fromplain);
+00069 <font class="keywordflow">if</font> (fromosis)
+00070 <font class="keyword">delete</font> (fromosis);
+00071 }
+00072
+00073 <font class="comment">/******************************************************************************</font>
+00074 <font class="comment"> * MarkupFilterMgr::Markup - sets/gets markup</font>
+00075 <font class="comment"> *</font>
+00076 <font class="comment"> * ENT: mark - new encoding or 0 to simply get the current markup</font>
+00077 <font class="comment"> *</font>
+00078 <font class="comment"> * RET: markup</font>
+00079 <font class="comment"> */</font>
+<a name="l00080"></a><a class="code" href="class_markup_filter_mgr.html#a2">00080</a> <font class="keywordtype">char</font> <a class="code" href="class_markup_filter_mgr.html#a2">MarkupFilterMgr::Markup</a>(<font class="keywordtype">char</font> mark) {
+00081 <font class="keywordflow">if</font> (mark &amp;&amp; mark != markup) {
+00082 markup = mark;
+00083 ModMap::const_iterator module;
+00084
+00085 SWFilter * oldplain = fromplain;
+00086 SWFilter * oldthml = fromthml;
+00087 SWFilter * oldgbf = fromgbf;
+00088 SWFilter * oldosis = fromosis;
+00089
+00090 CreateFilters(markup);
+00091
+00092 <font class="keywordflow">for</font> (module = getParentMgr()-&gt;Modules.begin(); module != getParentMgr()-&gt;Modules.end(); module++)
+00093 <font class="keywordflow">switch</font> (module-&gt;second-&gt;Markup()) {
+00094 <font class="keywordflow">case</font> FMT_THML:
+00095 <font class="keywordflow">if</font> (oldthml != fromthml) {
+00096 <font class="keywordflow">if</font> (oldthml) {
+00097 <font class="keywordflow">if</font> (!fromthml) {
+00098 module-&gt;second-&gt;RemoveRenderFilter(oldthml);
+00099 }
+00100 <font class="keywordflow">else</font> {
+00101 module-&gt;second-&gt;ReplaceRenderFilter(oldthml, fromthml);
+00102 }
+00103 }
+00104 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromthml) {
+00105 module-&gt;second-&gt;AddRenderFilter(fromthml);
+00106 }
+00107 }
+00108 <font class="keywordflow">break</font>;
+00109 <font class="keywordflow">case</font> FMT_GBF:
+00110 <font class="keywordflow">if</font> (oldgbf != fromgbf) {
+00111 <font class="keywordflow">if</font> (oldgbf) {
+00112 <font class="keywordflow">if</font> (!fromgbf) {
+00113 module-&gt;second-&gt;RemoveRenderFilter(oldgbf);
+00114 }
+00115 <font class="keywordflow">else</font> {
+00116 module-&gt;second-&gt;ReplaceRenderFilter(oldgbf, fromgbf);
+00117 }
+00118 }
+00119 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromgbf) {
+00120 module-&gt;second-&gt;AddRenderFilter(fromgbf);
+00121 }
+00122 <font class="keywordflow">break</font>;
+00123 }
+00124 <font class="keywordflow">case</font> FMT_PLAIN:
+00125 <font class="keywordflow">if</font> (oldplain != fromplain) {
+00126 <font class="keywordflow">if</font> (oldplain) {
+00127 <font class="keywordflow">if</font> (!fromplain) {
+00128 module-&gt;second-&gt;RemoveRenderFilter(oldplain);
+00129 }
+00130 <font class="keywordflow">else</font> {
+00131 module-&gt;second-&gt;ReplaceRenderFilter(oldplain, fromplain);
+00132 }
+00133 }
+00134 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromplain) {
+00135 module-&gt;second-&gt;AddRenderFilter(fromplain);
+00136 }
+00137 <font class="keywordflow">break</font>;
+00138 }
+00139 <font class="keywordflow">case</font> FMT_OSIS:
+00140 <font class="keywordflow">if</font> (oldosis != fromosis) {
+00141 <font class="keywordflow">if</font> (oldosis) {
+00142 <font class="keywordflow">if</font> (!fromosis) {
+00143 module-&gt;second-&gt;RemoveRenderFilter(oldosis);
+00144 }
+00145 <font class="keywordflow">else</font> {
+00146 module-&gt;second-&gt;ReplaceRenderFilter(oldosis, fromosis);
+00147 }
+00148 }
+00149 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (fromosis) {
+00150 module-&gt;second-&gt;AddRenderFilter(fromosis);
+00151 }
+00152 <font class="keywordflow">break</font>;
+00153 }
+00154 }
+00155
+00156 <font class="keywordflow">if</font> (oldthml)
+00157 <font class="keyword">delete</font> oldthml;
+00158 <font class="keywordflow">if</font> (oldgbf)
+00159 <font class="keyword">delete</font> oldgbf;
+00160 <font class="keywordflow">if</font> (oldplain)
+00161 <font class="keyword">delete</font> oldplain;
+00162 <font class="keywordflow">if</font> (oldosis)
+00163 <font class="keyword">delete</font> oldosis;
+00164 }
+00165 <font class="keywordflow">return</font> markup;
+00166 }
+00167
+<a name="l00168"></a><a class="code" href="class_markup_filter_mgr.html#a3">00168</a> <font class="keywordtype">void</font> <a class="code" href="class_markup_filter_mgr.html#a3">MarkupFilterMgr::AddRenderFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section) {
+00169 <font class="keywordflow">switch</font> (module-&gt;<a class="code" href="class_s_w_module.html#a20">Markup</a>()) {
+00170 <font class="keywordflow">case</font> FMT_THML:
+00171 <font class="keywordflow">if</font> (fromthml)
+00172 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromthml);
+00173 <font class="keywordflow">break</font>;
+00174 <font class="keywordflow">case</font> FMT_GBF:
+00175 <font class="keywordflow">if</font> (fromgbf)
+00176 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromgbf);
+00177 <font class="keywordflow">break</font>;
+00178 <font class="keywordflow">case</font> FMT_PLAIN:
+00179 <font class="keywordflow">if</font> (fromplain)
+00180 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromplain);
+00181 <font class="keywordflow">break</font>;
+00182 <font class="keywordflow">case</font> FMT_OSIS:
+00183 <font class="keywordflow">if</font> (fromosis)
+00184 module-&gt;<a class="code" href="class_s_w_module.html#a41">AddRenderFilter</a>(fromosis);
+00185 <font class="keywordflow">break</font>;
+00186 }
+00187 }
+00188
+00189 <font class="keywordtype">void</font> MarkupFilterMgr::CreateFilters(<font class="keywordtype">char</font> markup) {
+00190
+00191 <font class="keywordflow">switch</font> (markup) {
+00192 <font class="keywordflow">case</font> FMT_PLAIN:
+00193 fromplain = NULL;
+00194 fromthml = <font class="keyword">new</font> <a class="code" href="class_th_m_l_plain.html">ThMLPlain</a>();
+00195 fromgbf = <font class="keyword">new</font> <a class="code" href="class_g_b_f_plain.html">GBFPlain</a>();
+00196 fromosis = NULL;
+00197 <font class="keywordflow">break</font>;
+00198 <font class="keywordflow">case</font> FMT_THML:
+00199 fromplain = NULL;
+00200 fromthml = NULL;
+00201 fromgbf = <font class="keyword">new</font> <a class="code" href="class_g_b_f_th_m_l.html">GBFThML</a>();
+00202 fromosis = NULL;
+00203 <font class="keywordflow">break</font>;
+00204 <font class="keywordflow">case</font> FMT_GBF:
+00205 fromplain = NULL;
+00206 fromthml = <font class="keyword">new</font> <a class="code" href="class_th_m_l_g_b_f.html">ThMLGBF</a>();
+00207 fromgbf = NULL;
+00208 fromosis = NULL;
+00209 <font class="keywordflow">break</font>;
+00210 <font class="keywordflow">case</font> FMT_HTML:
+00211 fromplain = <font class="keyword">new</font> <a class="code" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a>();
+00212 fromthml = <font class="keyword">new</font> <a class="code" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a>();
+00213 fromgbf = <font class="keyword">new</font> <a class="code" href="class_g_b_f_h_t_m_l.html">GBFHTML</a>();
+00214 fromosis = NULL;
+00215 <font class="keywordflow">break</font>;
+00216 <font class="keywordflow">case</font> FMT_HTMLHREF:
+00217 fromplain = NULL;
+00218 fromthml = <font class="keyword">new</font> <a class="code" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a>();
+00219 fromgbf = <font class="keyword">new</font> <a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html">GBFHTMLHREF</a>();
+00220 fromosis = NULL;
+00221 <font class="keywordflow">break</font>;
+00222 <font class="keywordflow">case</font> FMT_RTF:
+00223 fromplain = NULL;
+00224 fromthml = <font class="keyword">new</font> <a class="code" href="class_th_m_l_r_t_f.html">ThMLRTF</a>();
+00225 fromgbf = <font class="keyword">new</font> <a class="code" href="class_g_b_f_r_t_f.html">GBFRTF</a>();
+00226 fromosis = NULL;
+00227 <font class="keywordflow">break</font>;
+00228 <font class="keywordflow">case</font> FMT_OSIS:
+00229 fromplain = NULL;
+00230 fromthml = <font class="keyword">new</font> <a class="code" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>();
+00231 fromgbf = <font class="keyword">new</font> <a class="code" href="class_g_b_f_o_s_i_s.html">GBFOSIS</a>();
+00232 fromosis = NULL;
+00233 <font class="keywordflow">break</font>;
+00234 }
+00235
+00236 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/markupfiltmgr_8h-source.html b/doc/api-documentation/html/markupfiltmgr_8h-source.html
new file mode 100644
index 0000000..4f06d77
--- /dev/null
+++ b/doc/api-documentation/html/markupfiltmgr_8h-source.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>markupfiltmgr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>markupfiltmgr.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swmarkupmgr.h - definition of class SWMarkupMgr, subclass of</font>
+00003 <font class="comment"> * used to transcode all module text to a requested</font>
+00004 <font class="comment"> * markup.</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef MARKUPFILTMGR_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define MARKUPFILTMGR_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;encfiltmgr.h&gt;</font>
+00026
+<a name="l00031"></a><a class="code" href="class_markup_filter_mgr.html">00031</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_markup_filter_mgr.html">MarkupFilterMgr</a> : <font class="keyword">public</font> <a class="code" href="class_encoding_filter_mgr.html">EncodingFilterMgr</a> {
+00032 <font class="keyword">protected</font>:
+00033 SWFilter* fromthml;
+00034 SWFilter* fromgbf;
+00035 SWFilter* fromplain;
+00036 SWFilter* fromosis;
+00037
+00038 <font class="comment">/*</font>
+00039 <font class="comment"> * current markup value</font>
+00040 <font class="comment"> */</font>
+00041 <font class="keywordtype">char</font> markup;
+00042
+00043 <font class="keywordtype">void</font> CreateFilters(<font class="keywordtype">char</font> markup);
+00044 <font class="keyword">public</font>:
+00053 <a class="code" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>(<font class="keywordtype">char</font> markup = FMT_THML, <font class="keywordtype">char</font> encoding = ENC_UTF8);
+00054
+00058 ~<a class="code" href="class_markup_filter_mgr.html">MarkupFilterMgr</a>();
+00059
+00065 <font class="keywordtype">char</font> Markup(<font class="keywordtype">char</font> m = FMT_UNKNOWN);
+00066
+00072 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddRenderFilters(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section);
+00073 };
+00074
+00075 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/mhcidx_8cpp-source.html b/doc/api-documentation/html/mhcidx_8cpp-source.html
new file mode 100644
index 0000000..76bb75d
--- /dev/null
+++ b/doc/api-documentation/html/mhcidx_8cpp-source.html
@@ -0,0 +1,306 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>mhcidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>mhcidx.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * This code wreaks but works (at least for MHC). Good luck!</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00019
+00020
+00021 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00022 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size);
+00023 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname);
+00024 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00025
+00026
+00027 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00028 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00029 <font class="keywordtype">long</font> chapoffset;
+00030 <font class="keywordtype">short</font> chapsize;
+00031 <font class="keywordtype">char</font> testmnt;
+00032
+00033
+00034 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00035 {
+00036 <font class="keywordtype">long</font> pos, offset;
+00037 <font class="keywordtype">int</font> num1, num2, rangemax, curbook = 0, curchap = 0, curverse = 0;
+00038 <font class="keywordtype">char</font> buf[127], startflag = 0;
+00039 <font class="keywordtype">short</font> size, tmp;
+00040
+00041 checkparams(argc, argv);
+00042
+00043 openfiles(argv[1]);
+00044
+00045 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00046 pos = 0;
+00047 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00048 pos = 4;
+00049 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00050
+00051
+00052 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00053 pos = 0;
+00054 size = 0;
+00055 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00056 write(vfp, &amp;size, 2);
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059
+00060 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00061 <font class="keywordflow">if</font> (num2) {
+00062 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00063 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00064 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(num2);
+00065 }
+00066 <font class="keywordflow">else</font> {
+00067 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00068 <font class="keywordflow">if</font> (!startflag) {
+00069 startflag = 1;
+00070 }
+00071 <font class="keywordflow">else</font> {
+00072 <font class="keywordflow">if</font> (num1 &lt;= key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>()) { <font class="comment">// new book</font>
+00073 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00074 key2.<a class="code" href="class_verse_key.html#a23">Book</a>(key2.<a class="code" href="class_verse_key.html#a23">Book</a>()+1);
+00075 }
+00076 }
+00077 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00078 printf(<font class="stringliteral">"Found Chapter Break: %d ('%s')\n"</font>, num1, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key2);
+00079 chapoffset = offset;
+00080 chapsize = size;
+00081 <font class="keywordflow">continue</font>;
+00082 }
+00083
+00084 key3 = key2;
+00085 key3 += (rangemax - key3.<a class="code" href="class_verse_key.html#a25">Verse</a>());
+00086
+00087 writeidx(key1, key2, key3, offset, size);
+00088 }
+00089 close(vfp);
+00090 close(cfp);
+00091 close(bfp);
+00092 close(fp);
+00093 }
+00094
+00095
+00096 <font class="comment">/**************************************************************************</font>
+00097 <font class="comment"> * ENT: key1 - current location of index</font>
+00098 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00099 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00100 <font class="comment"> */</font>
+00101
+00102 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00103 {
+00104 <font class="keywordtype">long</font> pos;
+00105 <font class="keywordtype">short</font> tmp;
+00106
+00107 <font class="keywordflow">for</font> (; ((key1 &lt;= key3) &amp;&amp; (key1.<a class="code" href="class_s_w_key.html#a6">Error</a>() != KEYERR_OUTOFBOUNDS) &amp;&amp; (key1.<a class="code" href="class_verse_key.html#a22">Testament</a>() == testmnt)); key1+=1) {
+00108 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00109 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00110 pos = lseek(cfp, 0, SEEK_CUR);
+00111 write(bfp, &amp;pos, 4);
+00112 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00113 write(cfp, &amp;pos, 4);
+00114 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Book intro (vss) set to same as chap for now(it should be chap 1 which usually contains the book into anyway)*/</font>
+00115 write(vfp, &amp;chapsize, 2);
+00116 }
+00117 pos = lseek(vfp, 0, SEEK_CUR);
+00118 write(cfp, &amp;pos, 4);
+00119 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00120 write(vfp, &amp;chapsize, 2);
+00121 }
+00122 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00123 write(vfp, &amp;offset, 4);
+00124 write(vfp, &amp;size, 2);
+00125 }
+00126 <font class="keywordflow">else</font> {
+00127 pos = 0;
+00128 tmp = 0;
+00129 write(vfp, &amp;pos, 4);
+00130 write(vfp, &amp;tmp, 2);
+00131 }
+00132 }
+00133 }
+00134
+00135
+00136 <font class="keywordtype">char</font> startentry(<font class="keywordtype">char</font> *buf)
+00137 {
+00138 <font class="keywordtype">char</font> loop;
+00139
+00140 <font class="keywordflow">if</font> (buf[0] != 10)
+00141 <font class="keywordflow">return</font> 0;
+00142 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'#'</font>)
+00143 <font class="keywordflow">return</font> 0;
+00144 <font class="keywordflow">if</font> (!isdigit(buf[2]))
+00145 <font class="keywordflow">return</font> 0;
+00146 <font class="keywordflow">for</font> (loop = 3; loop &lt; 7; loop++) {
+00147 <font class="keywordflow">if</font> (buf[loop] == <font class="charliteral">' '</font>)
+00148 <font class="keywordflow">break</font>;
+00149 <font class="keywordflow">if</font> ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != <font class="charliteral">','</font>) &amp;&amp; (buf[loop] != <font class="charliteral">'-'</font>))
+00150 <font class="keywordflow">return</font> 0;
+00151 }
+00152 <font class="keywordflow">return</font> 1;
+00153 }
+00154
+00155
+00156 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size)
+00157 {
+00158 <font class="keywordtype">char</font> buf[7];
+00159 <font class="keywordtype">char</font> buf2[20];
+00160 <font class="keywordtype">char</font> ch;
+00161 <font class="keywordtype">char</font> loop;
+00162 <font class="keywordtype">long</font> offset2;
+00163 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00164
+00165 memset(buf, <font class="charliteral">' '</font>, 7);
+00166
+00167 <font class="keywordflow">while</font> (1) {
+00168 <font class="keywordflow">if</font> (startentry(buf)) {
+00169 memset(buf, <font class="charliteral">' '</font>, 2);
+00170 <font class="keywordflow">for</font> (loop = 2; loop &lt; 7; loop++) {
+00171 <font class="keywordflow">if</font> ((buf[loop] == <font class="charliteral">'-'</font>) || (buf[loop] == <font class="charliteral">','</font>) || (buf[loop] == <font class="charliteral">' '</font>)) {
+00172 buf[loop] = 0;
+00173 *num2 = atoi(buf);
+00174 <font class="keywordflow">break</font>;
+00175 }
+00176 }
+00177 <font class="keywordflow">for</font> (ch = loop + 1; ch &lt; 7; ch++) {
+00178 <font class="keywordflow">if</font> (buf[ch] == <font class="charliteral">' '</font>) {
+00179 <font class="keywordflow">break</font>;
+00180 }
+00181 }
+00182 buf[ch] = 0;
+00183 *rangemax = atoi(&amp;buf[loop+1]);
+00184 <font class="keywordflow">if</font> (!*rangemax)
+00185 *rangemax = *num2;
+00186 *offset = lseek(fp, 0, SEEK_CUR) - 5;
+00187 <font class="keywordflow">if</font> (size) {
+00188 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00189 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00190 }
+00191 <font class="keywordflow">else</font> {
+00192 <font class="keywordflow">if</font> (vs2) {
+00193 *size = (offset2 - (*offset)) - 3;
+00194 }
+00195 <font class="keywordflow">else</font> {
+00196 sprintf(buf2, <font class="stringliteral">"$-$-$- XX:%d"</font>, ch2);
+00197 *size = (offset2 - (*offset)) - ((strlen(buf2) + 4));
+00198 }
+00199 }
+00200 lseek(fp, *offset, SEEK_SET);
+00201 }
+00202 <font class="keywordflow">return</font> 0;
+00203 }
+00204
+00205 <font class="keywordflow">if</font> (!strncmp(buf, <font class="stringliteral">"$-$-$-"</font>, 6)) {
+00206 memset(buf2, 0, 7);
+00207 loop = 0;
+00208 <font class="keywordflow">while</font> ((read(fp, &amp;buf2[loop], 1) == 1) &amp;&amp; (loop &lt; 7)) {
+00209 <font class="keywordflow">if</font> ((buf2[loop] == 10) || (buf2[loop] == 13)) {
+00210 buf2[loop] = 0;
+00211 <font class="keywordflow">break</font>;
+00212 }
+00213 loop++;
+00214 }
+00215 <font class="keywordflow">while</font> (read(fp, &amp;ch, 1) == 1) {
+00216 <font class="keywordflow">if</font> (ch == <font class="charliteral">'*'</font>)
+00217 <font class="keywordflow">break</font>;
+00218 }
+00219
+00220 *offset = lseek(fp, 0, SEEK_CUR) - 1;
+00221 *num2 = 0;
+00222 <font class="keywordflow">for</font> (loop = strlen(buf2) - 1; loop; loop--) {
+00223 <font class="keywordflow">if</font> (buf2[loop] == <font class="charliteral">':'</font>)
+00224 <font class="keywordflow">break</font>;
+00225 }
+00226 *num1 = atoi(&amp;buf2[loop+1]);
+00227 printf(<font class="stringliteral">"Chapter marker: %s\n"</font>, buf2);
+00228 <font class="keywordflow">if</font> (size) {
+00229 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00230 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00231 }
+00232 <font class="keywordflow">else</font> {
+00233 <font class="keywordflow">if</font> (vs2) {
+00234 *size = (offset2 - (*offset)) - 3;
+00235 }
+00236 <font class="keywordflow">else</font> {
+00237 sprintf(buf2, <font class="stringliteral">"$-$-$- XX:%d"</font>, ch2);
+00238 *size = (offset2 - (*offset)) - ((strlen(buf2) + 4));
+00239 }
+00240 }
+00241 lseek(fp, *offset, SEEK_SET);
+00242 }
+00243 <font class="keywordflow">return</font> 0;
+00244 }
+00245
+00246
+00247 memmove(buf, &amp;buf[1], 6);
+00248 <font class="keywordflow">if</font> (read(fp, &amp;buf[6], 1) != 1)
+00249 <font class="keywordflow">return</font> 1;
+00250 }
+00251 }
+00252
+00253
+00254 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname)
+00255 {
+00256 <font class="keywordtype">char</font> buf[255];
+00257
+00258 <font class="keywordflow">if</font> ((fp = open(fname, O_RDONLY)) == -1) {
+00259 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00260 exit(1);
+00261 }
+00262
+00263 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00264 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00265 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00266 exit(1);
+00267 }
+00268
+00269 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00270 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00271 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00272 exit(1);
+00273 }
+00274
+00275 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00276 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00277 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00278 exit(1);
+00279 }
+00280 }
+00281
+00282
+00283 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00284 {
+00285 <font class="keywordflow">if</font> (argc &lt; 2) {
+00286 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt - for new testmt file]\n"</font>, argv[0]);
+00287 exit(1);
+00288 }
+00289 <font class="keywordflow">if</font> (argc == 3)
+00290 key1 = key2 = key3 = <font class="stringliteral">"Matthew 1:1"</font>;
+00291 <font class="keywordflow">else</font> key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00292 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/multimapwdef_8h-source.html b/doc/api-documentation/html/multimapwdef_8h-source.html
new file mode 100644
index 0000000..e17bed9
--- /dev/null
+++ b/doc/api-documentation/html/multimapwdef_8h-source.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>multimapwdef.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>multimapwdef.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef MULTIMAPWDEF</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define MULTIMAPWDEF</font>
+00003 <font class="preprocessor"></font>
+00004 <font class="preprocessor">#include &lt;map&gt;</font>
+00005
+00006 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00007
+00008 <font class="comment">// multmap that still lets you use [] to reference FIRST</font>
+00009 <font class="comment">// entry of a key if multiples exist</font>
+00010 <font class="keyword">template</font> &lt;<font class="keyword">class</font> Key, <font class="keyword">class</font> T, <font class="keyword">class</font> Compare&gt;
+00011 <font class="keyword">class </font>multimapwithdefault : <font class="keyword">public</font> multimap&lt;Key, T, Compare&gt; {
+00012 <font class="keyword">public</font>:
+00013 <font class="keyword">typedef</font> pair&lt;const Key, T&gt; value_type;
+00014 T&amp; operator[](<font class="keyword">const</font> Key&amp; k) {
+00015 <font class="keywordflow">if</font> (find(k) == end()) {
+00016 insert(value_type(k, T()));
+00017 }
+00018 <font class="keywordflow">return</font> (*(find(k))).second;
+00019 }
+00020 <font class="keywordtype">bool</font> has(<font class="keyword">const</font> Key&amp; k, <font class="keyword">const</font> T &amp;val)<font class="keyword"> const </font>{
+00021 <font class="keyword">typename</font> multimap&lt;Key, T, Compare&gt;::const_iterator start = lower_bound(k);
+00022 <font class="keyword">typename</font> multimap&lt;Key, T, Compare&gt;::const_iterator end = upper_bound(k);
+00023 <font class="keywordflow">for</font> (; start!=end; start++) {
+00024 <font class="keywordflow">if</font> (start-&gt;second == val)
+00025 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00026 }
+00027 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00028 }
+00029 };
+00030
+00031 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/namespaces.html b/doc/api-documentation/html/namespaces.html
new file mode 100644
index 0000000..f6867be
--- /dev/null
+++ b/doc/api-documentation/html/namespaces.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Namespace Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>The Sword Project Namespace List</h1>Here is a list of all documented namespaces with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue">Title: Keyboard mapping for Michigan-Claremont Hebrew input Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:</td></tr>
+</table>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/namespacestd.html b/doc/api-documentation/html/namespacestd.html
new file mode 100644
index 0000000..321d486
--- /dev/null
+++ b/doc/api-documentation/html/namespacestd.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>std Namespace Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>std Namespace Reference</h1>Title: Keyboard mapping for Michigan-Claremont Hebrew input Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:.
+<a href="#_details">More...</a>
+<p>
+<table border=0 cellpadding=0 cellspacing=0>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Title: Keyboard mapping for Michigan-Claremont Hebrew input Description: Copyright: Copyright (c) 2001 CrossWire Bible Society under the terms of the GNU GPL Company:.
+<p>
+<dl compact><dt><b>
+Author: </b><dd>
+Troy A. Griffitts </dl><dl compact><dt><b>
+Version: </b><dd>
+1.0 </dl>
+<p>
+<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/nasb_8cpp-source.html b/doc/api-documentation/html/nasb_8cpp-source.html
new file mode 100644
index 0000000..f8110b3
--- /dev/null
+++ b/doc/api-documentation/html/nasb_8cpp-source.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>nasb.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>nasb.cpp</h1><div class="fragment"><pre>00001
+00002
+00003 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00004 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00005 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00006 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00007
+00008 <font class="preprocessor">#ifndef __GNUC__</font>
+00009 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00010 <font class="preprocessor">#else</font>
+00011 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00012 <font class="preprocessor">#endif</font>
+00013 <font class="preprocessor"></font>
+00014 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00015
+00016 <font class="keyword">class </font>FileCompress: <font class="keyword">public</font> SWCompress {
+00017 <font class="keywordtype">int</font> ifd;
+00018 <font class="keywordtype">int</font> ofd;
+00019 <font class="keywordtype">int</font> ufd;
+00020 <font class="keywordtype">int</font> zfd;
+00021 <font class="keyword">public</font>:
+00022 FileCompress(<font class="keywordtype">char</font> *);
+00023 ~FileCompress();
+00024 <font class="keywordtype">int</font> GetChars(<font class="keywordtype">char</font> *, <font class="keywordtype">int</font> len);
+00025 <font class="keywordtype">int</font> SendChars(<font class="keywordtype">char</font> *, <font class="keywordtype">int</font> len);
+00026 <font class="keywordtype">void</font> Encode();
+00027 <font class="keywordtype">void</font> Decode();
+00028 };
+00029
+00030
+00031 FileCompress::FileCompress(<font class="keywordtype">char</font> *fname)
+00032 {
+00033 <font class="keywordtype">char</font> buf[256];
+00034
+00035 <font class="preprocessor">#ifndef O_BINARY</font>
+00036 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0</font>
+00037 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00038 <font class="preprocessor"></font>
+00039 ufd = open(fname, O_RDWR|O_CREAT|O_BINARY);
+00040
+00041 sprintf(buf, <font class="stringliteral">"%s.zzz"</font>, fname);
+00042 zfd = open(buf, O_RDWR|O_CREAT|O_BINARY);
+00043 }
+00044
+00045
+00046 FileCompress::~FileCompress(<font class="keywordtype">char</font> *fname)
+00047 {
+00048 close(ufd);
+00049 close(zfd);
+00050 }
+00051
+00052
+00053 <font class="keywordtype">int</font> FileCompress::GetChars(<font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len)
+00054 {
+00055 <font class="keywordflow">return</font> read(ifd, buf, len);
+00056 }
+00057
+00058
+00059 <font class="keywordtype">int</font> FileCompress::SendChars(<font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len)
+00060 {
+00061 <font class="keywordflow">return</font> write(ofd, buf, len);
+00062 }
+00063
+00064
+00065 <font class="keywordtype">void</font> FileCompress::Encode()
+00066 {
+00067 ifd = ufd;
+00068 ofd = zfd;
+00069
+00070 SWCompress::Encode();
+00071 }
+00072
+00073
+00074 <font class="keywordtype">void</font> FileCompress::Decode()
+00075 {
+00076 ifd = zfd;
+00077 ofd = ufd;
+00078
+00079 SWCompress::Decode();
+00080 }
+00081
+00082
+00083 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00084 {
+00085 <font class="keywordtype">int</font> decomp = 0;
+00086 SWCompress *fobj;
+00087
+00088 <font class="keywordflow">if</font> (argc != 2) {
+00089 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;filename|filename.zzz&gt;\n"</font>, argv[0]);
+00090 exit(1);
+00091 }
+00092
+00093 <font class="keywordflow">if</font> (strlen(argv[1]) &gt; 4) {
+00094 <font class="keywordflow">if</font> (!strcmp(&amp;argv[1][strlen(argv[1])-4], <font class="stringliteral">".zzz"</font>)) {
+00095 argv[1][strlen(argv[1])-4] = 0;
+00096 decomp = 1;
+00097 }
+00098 }
+00099
+00100 fobj = <font class="keyword">new</font> FileCompress(argv[1]);
+00101
+00102 <font class="keywordflow">if</font> (decomp)
+00103 fobj-&gt;Decode();
+00104 <font class="keywordflow">else</font> fobj-&gt;Encode();
+00105
+00106 <font class="keyword">delete</font> fobj;
+00107 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/nuidx_8cpp-source.html b/doc/api-documentation/html/nuidx_8cpp-source.html
new file mode 100644
index 0000000..cf64350
--- /dev/null
+++ b/doc/api-documentation/html/nuidx_8cpp-source.html
@@ -0,0 +1,252 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>nuidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>nuidx.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * This code wreaks but works (at least for MHC). Good luck!</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00019
+00020
+00021 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00022 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size);
+00023 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname);
+00024 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00025
+00026
+00027 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00028 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00029 <font class="keywordtype">long</font> chapoffset;
+00030 <font class="keywordtype">short</font> chapsize;
+00031 <font class="keywordtype">char</font> testmnt;
+00032
+00033
+00034 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00035 {
+00036 <font class="keywordtype">long</font> pos, offset;
+00037 <font class="keywordtype">int</font> num1, num2, rangemax, curbook = 0, curchap = 0, curverse = 0;
+00038 <font class="keywordtype">char</font> buf[127], startflag = 0;
+00039 <font class="keywordtype">short</font> size, tmp;
+00040
+00041 checkparams(argc, argv);
+00042
+00043 openfiles(argv[1]);
+00044
+00045 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00046 num1 = key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00047 num2 = key1.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00048 pos = 0;
+00049 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00050 pos = 4;
+00051 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00052
+00053
+00054 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00055 pos = 0;
+00056 size = 0;
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00060 write(vfp, &amp;size, 2);
+00061
+00062 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00063 writeidx(key1, key2, key3, offset, size);
+00064 key2++;
+00065 key3 = key2;
+00066 }
+00067 close(vfp);
+00068 close(cfp);
+00069 close(bfp);
+00070 close(fp);
+00071 }
+00072
+00073
+00074 <font class="comment">/**************************************************************************</font>
+00075 <font class="comment"> * ENT: key1 - current location of index</font>
+00076 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00077 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00078 <font class="comment"> */</font>
+00079
+00080 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00081 {
+00082 <font class="keywordtype">long</font> pos;
+00083 <font class="keywordtype">short</font> tmp;
+00084
+00085 <font class="keywordflow">for</font> (; ((key1 &lt;= key3) &amp;&amp; (key1.<a class="code" href="class_s_w_key.html#a6">Error</a>() != KEYERR_OUTOFBOUNDS) &amp;&amp; (key1.<a class="code" href="class_verse_key.html#a22">Testament</a>() == testmnt)); key1+=1) {
+00086 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00087 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00088 pos = lseek(cfp, 0, SEEK_CUR);
+00089 write(bfp, &amp;pos, 4);
+00090 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00091 write(cfp, &amp;pos, 4);
+00092 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Book intro (vss) set to same as chap for now(it should be chap 1 which usually contains the book into anyway)*/</font>
+00093 write(vfp, &amp;chapsize, 2);
+00094 }
+00095 pos = lseek(vfp, 0, SEEK_CUR);
+00096 write(cfp, &amp;pos, 4);
+00097 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00098 write(vfp, &amp;chapsize, 2);
+00099 }
+00100 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00101 write(vfp, &amp;offset, 4);
+00102 write(vfp, &amp;size, 2);
+00103 }
+00104 <font class="keywordflow">else</font> {
+00105 pos = 0;
+00106 tmp = 0;
+00107 write(vfp, &amp;pos, 4);
+00108 write(vfp, &amp;tmp, 2);
+00109 }
+00110 }
+00111 }
+00112
+00113
+00114 <font class="keywordtype">char</font> startchap(<font class="keywordtype">char</font> *buf)
+00115 {
+00116 <font class="keywordtype">char</font> loop;
+00117
+00118 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00119 <font class="keywordflow">return</font> 0;
+00120 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'S'</font>)
+00121 <font class="keywordflow">return</font> 0;
+00122 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'C'</font>)
+00123 <font class="keywordflow">return</font> 0;
+00124 <font class="comment">/*</font>
+00125 <font class="comment"> if (!isdigit(buf[2]))</font>
+00126 <font class="comment"> return 0;</font>
+00127 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00128 <font class="comment"> if (buf[loop] == ' ')</font>
+00129 <font class="comment"> break;</font>
+00130 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00131 <font class="comment"> return 0;</font>
+00132 <font class="comment"> }</font>
+00133 <font class="comment">*/</font>
+00134 <font class="keywordflow">return</font> 1;
+00135 }
+00136
+00137
+00138 <font class="keywordtype">char</font> startentry(<font class="keywordtype">char</font> *buf)
+00139 {
+00140 <font class="keywordtype">char</font> loop;
+00141
+00142 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00143 <font class="keywordflow">return</font> 0;
+00144 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'S'</font>)
+00145 <font class="keywordflow">return</font> 0;
+00146 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'V'</font>)
+00147 <font class="keywordflow">return</font> 0;
+00148 <font class="comment">/*</font>
+00149 <font class="comment"> if (!isdigit(buf[2]))</font>
+00150 <font class="comment"> return 0;</font>
+00151 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00152 <font class="comment"> if (buf[loop] == ' ')</font>
+00153 <font class="comment"> break;</font>
+00154 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00155 <font class="comment"> return 0;</font>
+00156 <font class="comment"> }</font>
+00157 <font class="comment">*/</font>
+00158 <font class="keywordflow">return</font> 1;
+00159 }
+00160
+00161
+00162 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size)
+00163 {
+00164 <font class="keywordtype">char</font> buf[7];
+00165 <font class="keywordtype">char</font> buf2[20];
+00166 <font class="keywordtype">char</font> ch;
+00167 <font class="keywordtype">char</font> loop;
+00168 <font class="keywordtype">long</font> offset2;
+00169 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00170 <font class="keywordtype">bool</font> flag;
+00171 <font class="keywordtype">long</font> chapstart = 0;
+00172
+00173 memset(buf, <font class="charliteral">' '</font>, 7);
+00174
+00175 <font class="keywordflow">while</font> (1) {
+00176 <font class="keywordflow">if</font> (startentry(buf)) {
+00177 <font class="keywordflow">if</font> (size)
+00178 *offset = lseek(fp, 0, SEEK_CUR) - 3;
+00179 <font class="keywordflow">else</font> *offset = lseek(fp, 0, SEEK_CUR) - 7;
+00180 <font class="keywordflow">if</font> (size) {
+00181 ch2 = *num1;
+00182 vs2 = *num2;
+00183 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00184 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00185 }
+00186 <font class="keywordflow">else</font> {
+00187 *size = (offset2 - (*offset));
+00188 }
+00189 lseek(fp, *offset, SEEK_SET);
+00190 }
+00191 <font class="keywordflow">return</font> 0;
+00192 }
+00193 memmove(buf, &amp;buf[1], 6);
+00194 <font class="keywordflow">if</font> (read(fp, &amp;buf[6], 1) != 1)
+00195 <font class="keywordflow">return</font> 1;
+00196 }
+00197 }
+00198
+00199
+00200 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname)
+00201 {
+00202 <font class="keywordtype">char</font> buf[255];
+00203
+00204 <font class="keywordflow">if</font> ((fp = open(fname, O_RDONLY)) == -1) {
+00205 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00206 exit(1);
+00207 }
+00208
+00209 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00210 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00211 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00212 exit(1);
+00213 }
+00214
+00215 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00216 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00217 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00218 exit(1);
+00219 }
+00220
+00221 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00222 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00223 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00224 exit(1);
+00225 }
+00226 }
+00227
+00228
+00229 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00230 {
+00231 <font class="keywordflow">if</font> (argc &lt; 2) {
+00232 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt - for new testmt file]\n"</font>, argv[0]);
+00233 exit(1);
+00234 }
+00235 <font class="keywordflow">if</font> (argc == 3)
+00236 key1 = key2 = key3 = <font class="stringliteral">"Matthew 1:1"</font>;
+00237 <font class="keywordflow">else</font> key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00238 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/nullim_8cpp-source.html b/doc/api-documentation/html/nullim_8cpp-source.html
new file mode 100644
index 0000000..c44f015
--- /dev/null
+++ b/doc/api-documentation/html/nullim_8cpp-source.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>nullim.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>nullim.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;nullim.h&gt;</font>
+00002
+00003
+00004 NullIM::NullIM() {
+00005 }
+00006
+00007 <font class="keywordtype">int</font> *NullIM::translate(<font class="keywordtype">char</font> ch) {
+00008 <font class="keyword">static</font> <font class="keywordtype">int</font> retVal[1];
+00009 *retVal = ch;
+00010 <font class="keywordflow">return</font> retVal;
+00011 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/nullim_8h-source.html b/doc/api-documentation/html/nullim_8h-source.html
new file mode 100644
index 0000000..cfd1d3b
--- /dev/null
+++ b/doc/api-documentation/html/nullim_8h-source.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>nullim.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>nullim.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef NULLIM_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define NULLIM_H</font>
+00003 <font class="preprocessor"></font>
+00004 <font class="preprocessor">#include &lt;swinputmeth.h&gt;</font>
+00005
+00006
+00007 <font class="keyword">class </font>NullIM : <font class="keyword">public</font> <a class="code" href="class_s_w_input_method.html">SWInputMethod</a> {
+00008
+00009 <font class="keyword">public</font>:
+00010 NullIM();
+00011 <font class="keywordtype">int</font> * translate(<font class="keywordtype">char</font> ch);
+00012 };
+00013
+00014 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/plainfootnotes_8cpp-source.html b/doc/api-documentation/html/plainfootnotes_8cpp-source.html
new file mode 100644
index 0000000..4881756
--- /dev/null
+++ b/doc/api-documentation/html/plainfootnotes_8cpp-source.html
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>plainfootnotes.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>plainfootnotes.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> plainfootnotes.cpp - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Wed Oct 13 1999</font>
+00005 <font class="comment"> copyright : (C) 1999 by The team of BibleTime</font>
+00006 <font class="comment"> email : info@bibletime.de</font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. *</font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="preprocessor">#include &lt;plainfootnotes.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00020
+00021 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00023 <font class="preprocessor">#ifndef __GNUC__</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00026 <font class="preprocessor">#endif</font>
+00027 <font class="preprocessor"></font>
+00028 <font class="keyword">const</font> <font class="keywordtype">char</font> PLAINFootnotes::on[] = <font class="stringliteral">"On"</font>;
+00029 <font class="keyword">const</font> <font class="keywordtype">char</font> PLAINFootnotes::off[] = <font class="stringliteral">"Off"</font>;
+00030 <font class="keyword">const</font> <font class="keywordtype">char</font> PLAINFootnotes::optName[] = <font class="stringliteral">"Footnotes"</font>;
+00031 <font class="keyword">const</font> <font class="keywordtype">char</font> PLAINFootnotes::optTip[] = <font class="stringliteral">"Toggles Footnotes On and Off In Bible Texts If They Exist"</font>;
+00032
+00033 PLAINFootnotes::PLAINFootnotes(){
+00034 option = <font class="keyword">false</font>;
+00035 options.push_back(on);
+00036 options.push_back(off);
+00037 }
+00038
+00039 PLAINFootnotes::~PLAINFootnotes(){
+00040 }
+00041
+00042
+00043 <font class="keywordtype">void</font> PLAINFootnotes::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00044 {
+00045 option = (!stricmp(ival, on));
+00046 }
+00047
+00048 <font class="keyword">const</font> <font class="keywordtype">char</font> *PLAINFootnotes::getOptionValue()
+00049 {
+00050 <font class="keywordflow">return</font> (option) ? on:off;
+00051 }
+00052
+00053
+00054 <font class="keywordtype">char</font> PLAINFootnotes::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00055 {
+00056 <font class="keywordtype">char</font> token[2048];
+00057 <font class="keywordtype">int</font> tokpos = 0;
+00058 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00059 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00060
+00061 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want footnotes</font>
+00062 <font class="keywordtype">char</font> *to, *from;
+00063 <font class="keywordtype">int</font> len;
+00064 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00065
+00066 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00067 <font class="keywordflow">if</font> (len &lt; maxlen)
+00068 {
+00069 memmove(&amp;text[maxlen - len], text, len);
+00070 from = &amp;text[maxlen - len];
+00071 }
+00072 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00073
+00074 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00075 <font class="keywordflow">if</font> (*from == <font class="charliteral">'{'</font>) <font class="comment">// Footnote start</font>
+00076 {
+00077 hide = <font class="keyword">true</font>;
+00078 <font class="keywordflow">continue</font>;
+00079 }
+00080 <font class="keywordflow">if</font> (*from == <font class="charliteral">'}'</font>) <font class="comment">// Footnote end</font>
+00081 {
+00082 hide=<font class="keyword">false</font>;
+00083 <font class="keywordflow">continue</font>;
+00084 }
+00085 <font class="keywordflow">if</font> (intoken) {
+00086 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00087 token[tokpos++] = *from;
+00088 token[tokpos+2] = 0;
+00089 }
+00090 <font class="keywordflow">else</font> {
+00091 <font class="keywordflow">if</font> (!hide) {
+00092 *to++ = *from;
+00093 lastspace = (*from == <font class="charliteral">' '</font>);
+00094 }
+00095 }
+00096 }
+00097 *to++ = 0;
+00098 *to = 0;
+00099 }
+00100 <font class="keywordflow">return</font> 0;
+00101 }
+00102
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/plainfootnotes_8h-source.html b/doc/api-documentation/html/plainfootnotes_8h-source.html
new file mode 100644
index 0000000..f23216b
--- /dev/null
+++ b/doc/api-documentation/html/plainfootnotes_8h-source.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>plainfootnotes.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>plainfootnotes.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> plainfootnotes.h - description </font>
+00003 <font class="comment"> ------------------- </font>
+00004 <font class="comment"> begin : Wed Oct 13 1999 </font>
+00005 <font class="comment"> copyright : (C) 1999 by The team of BibleTime </font>
+00006 <font class="comment"> email : info@bibletime.de </font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. * </font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="comment">/* $Header: /usr/local/cvsroot/sword/doc/api-documentation/html/plainfootnotes_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $ */</font>
+00019 <font class="comment">/* $Revision: 1.7 $ */</font>
+00020
+00021 <font class="preprocessor">#ifndef PLAINFOOTNOTES_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define PLAINFOOTNOTES_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00025
+00026 <font class="keyword">class </font>QObject;
+00027 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00028 <font class="keyword">class </font><a class="code" href="class_s_w_key.html">SWKey</a>;
+00029
+<a name="l00033"></a><a class="code" href="class_p_l_a_i_n_footnotes.html">00033</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a>:<font class="keyword">public</font> SWFilter
+00034 {
+00035 <font class="keywordtype">bool</font> option;
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00037 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00038 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00039 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00040 OptionsList options;
+00041
+00042 <font class="keyword">public</font>:
+00043 <a class="code" href="class_p_l_a_i_n_footnotes.html">PLAINFootnotes</a> ();
+00044 <font class="keyword">virtual</font> ~ PLAINFootnotes ();
+00045 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00047 {
+00048 <font class="keywordflow">return</font> optName;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00051 {
+00052 <font class="keywordflow">return</font> optTip;
+00053 }
+00054 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00055 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00056 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00057 {
+00058 <font class="keywordflow">return</font> options;
+00059 }
+00060 };
+00061
+00062 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/plainhtml_8cpp-source.html b/doc/api-documentation/html/plainhtml_8cpp-source.html
new file mode 100644
index 0000000..7892c5e
--- /dev/null
+++ b/doc/api-documentation/html/plainhtml_8cpp-source.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>plainhtml.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>plainhtml.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> rwphtml.cpp - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Thu Jun 24 1999</font>
+00005 <font class="comment"> copyright : (C) 1999 by Torsten Uhlmann</font>
+00006 <font class="comment"> email : TUhlmann@gmx.de</font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. *</font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;plainhtml.h&gt;</font>
+00021
+00022
+00023 PLAINHTML::PLAINHTML()
+00024 {
+00025 }
+00026
+00027
+00028 <font class="keywordtype">char</font> PLAINHTML::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00029 {
+00030 <font class="keywordtype">char</font> *to, *from;
+00031 <font class="keywordtype">int</font> len;
+00032 <font class="keywordtype">int</font> count = 0;
+00033
+00034 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00035 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00036 memmove(&amp;text[maxlen - len], text, len);
+00037 from = &amp;text[maxlen - len];
+00038 }
+00039 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00040 <font class="keywordflow">for</font> (to = text; *from; from++)
+00041 {
+00042 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'\n'</font>) &amp;&amp; (from[1] == <font class="charliteral">'\n'</font>)) <font class="comment">// paragraph</font>
+00043 {
+00044 *to++ = <font class="charliteral">'&lt;'</font>;
+00045 *to++ = <font class="charliteral">'P'</font>;
+00046 *to++ = <font class="charliteral">'&gt;'</font>;
+00047 from++;
+00048 <font class="keywordflow">continue</font>;
+00049 } <font class="keywordflow">else</font> {
+00050 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'\n'</font>)) <font class="comment">// &amp;&amp; (from[1] != '\n')) // new line</font>
+00051 {
+00052 *to++ = <font class="charliteral">'&lt;'</font>;
+00053 *to++ = <font class="charliteral">'B'</font>;
+00054 *to++ = <font class="charliteral">'R'</font>;
+00055 *to++ = <font class="charliteral">'&gt;'</font>;
+00056 <font class="keywordflow">continue</font>;
+00057 }
+00058 }
+00059
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'{'</font>) {
+00061 *to++ = <font class="charliteral">'&lt;'</font>;
+00062 *to++ = <font class="charliteral">'F'</font>;
+00063 *to++ = <font class="charliteral">'O'</font>;
+00064 *to++ = <font class="charliteral">'N'</font>;
+00065 *to++ = <font class="charliteral">'T'</font>;
+00066 *to++ = <font class="charliteral">' '</font>;
+00067 *to++ = <font class="charliteral">'C'</font>;
+00068 *to++ = <font class="charliteral">'O'</font>;
+00069 *to++ = <font class="charliteral">'L'</font>;
+00070 *to++ = <font class="charliteral">'O'</font>;
+00071 *to++ = <font class="charliteral">'R'</font>;
+00072 *to++ = <font class="charliteral">'='</font>;
+00073 *to++ = <font class="charliteral">'#'</font>;
+00074 *to++ = <font class="charliteral">'8'</font>;
+00075 *to++ = <font class="charliteral">'0'</font>;
+00076 *to++ = <font class="charliteral">'0'</font>;
+00077 *to++ = <font class="charliteral">'0'</font>;
+00078 *to++ = <font class="charliteral">'0'</font>;
+00079 *to++ = <font class="charliteral">'0'</font>;
+00080 *to++ = <font class="charliteral">'&gt;'</font>;
+00081
+00082 *to++ = <font class="charliteral">'&lt;'</font>;
+00083 *to++ = <font class="charliteral">'S'</font>;
+00084 *to++ = <font class="charliteral">'M'</font>;
+00085 *to++ = <font class="charliteral">'A'</font>;
+00086 *to++ = <font class="charliteral">'L'</font>;
+00087 *to++ = <font class="charliteral">'L'</font>;
+00088 *to++ = <font class="charliteral">'&gt;'</font>;
+00089 *to++ = <font class="charliteral">' '</font>;
+00090 *to++ = <font class="charliteral">'('</font>;
+00091 <font class="keywordflow">continue</font>;
+00092 }
+00093
+00094 <font class="keywordflow">if</font> (*from == <font class="charliteral">'}'</font>)
+00095 {
+00096 *to++ = <font class="charliteral">')'</font>;
+00097 *to++ = <font class="charliteral">' '</font>;
+00098 *to++ = <font class="charliteral">'&lt;'</font>;
+00099 *to++ = <font class="charliteral">'/'</font>;
+00100 *to++ = <font class="charliteral">'S'</font>;
+00101 *to++ = <font class="charliteral">'M'</font>;
+00102 *to++ = <font class="charliteral">'A'</font>;
+00103 *to++ = <font class="charliteral">'L'</font>;
+00104 *to++ = <font class="charliteral">'L'</font>;
+00105 *to++ = <font class="charliteral">'&gt;'</font>;
+00106
+00107 *to++ = <font class="charliteral">'&lt;'</font>;
+00108 *to++ = <font class="charliteral">'/'</font>;
+00109 *to++ = <font class="charliteral">'F'</font>;
+00110 *to++ = <font class="charliteral">'O'</font>;
+00111 *to++ = <font class="charliteral">'N'</font>;
+00112 *to++ = <font class="charliteral">'T'</font>;
+00113 *to++ = <font class="charliteral">'&gt;'</font>;
+00114 <font class="keywordflow">continue</font>;
+00115 }
+00116
+00117 <font class="keywordflow">if</font> ((*from == <font class="charliteral">' '</font>) &amp;&amp; (count &gt; 5000))
+00118 {
+00119 *to++ = <font class="charliteral">'&lt;'</font>;
+00120 *to++ = <font class="charliteral">'W'</font>;
+00121 *to++ = <font class="charliteral">'B'</font>;
+00122 *to++ = <font class="charliteral">'R'</font>;
+00123 *to++ = <font class="charliteral">'&gt;'</font>;
+00124 count = 0;
+00125 <font class="keywordflow">continue</font>;
+00126 }
+00127
+00128 *to++ = *from;
+00129 count++;
+00130 }
+00131 *to++ = 0;
+00132 *to = 0;
+00133 <font class="keywordflow">return</font> 0;
+00134 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/plainhtml_8h-source.html b/doc/api-documentation/html/plainhtml_8h-source.html
new file mode 100644
index 0000000..a7fc76a
--- /dev/null
+++ b/doc/api-documentation/html/plainhtml_8h-source.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>plainhtml.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>plainhtml.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> rwphtml.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Tue Jun 15 15:34:26 CEST 1999</font>
+00005 <font class="comment"></font>
+00006 <font class="comment"> copyright : (C) 1999 by Torsten Uhlmann</font>
+00007 <font class="comment"> email : TUhlmann@gmx.de</font>
+00008 <font class="comment"> ***************************************************************************/</font>
+00009
+00010 <font class="comment">/***************************************************************************</font>
+00011 <font class="comment"> * *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00013 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00014 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00015 <font class="comment"> * (at your option) any later version. *</font>
+00016 <font class="comment"> * *</font>
+00017 <font class="comment"> ***************************************************************************/</font>
+00018
+00019 <font class="comment">/* $Header: /usr/local/cvsroot/sword/doc/api-documentation/html/plainhtml_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $ */</font>
+00020 <font class="comment">/* $Revision: 1.7 $ */</font>
+00021
+00022 <font class="preprocessor">#ifndef PLAINHTML_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define PLAINHTML_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+<a name="l00031"></a><a class="code" href="class_p_l_a_i_n_h_t_m_l.html">00031</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a>:<font class="keyword">public</font> SWFilter
+00032 {
+00033 <font class="keyword">public</font>:
+00034 <a class="code" href="class_p_l_a_i_n_h_t_m_l.html">PLAINHTML</a> ();
+00035 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00036 };
+00037
+00038 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawcom_8cpp-source.html b/doc/api-documentation/html/rawcom_8cpp-source.html
new file mode 100644
index 0000000..5115fb1
--- /dev/null
+++ b/doc/api-documentation/html/rawcom_8cpp-source.html
@@ -0,0 +1,289 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawcom.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawcom.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawcom.cpp - code for class 'RawCom'- a module that reads raw commentary</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;rawcom.h&gt;</font>
+00021
+00022
+00023 <font class="comment">/******************************************************************************</font>
+00024 <font class="comment"> * RawCom Constructor - Initializes data for instance of RawCom</font>
+00025 <font class="comment"> *</font>
+00026 <font class="comment"> * ENT: iname - Internal name for module</font>
+00027 <font class="comment"> * idesc - Name to display to user for module</font>
+00028 <font class="comment"> * idisp - Display object to use for displaying</font>
+00029 <font class="comment"> */</font>
+00030
+00031 RawCom::RawCom(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding encoding, SWTextDirection dir, SWTextMarkup markup, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang)
+00032 : RawVerse(ipath),
+00033 <a class="code" href="class_s_w_com.html">SWCom</a>(iname, idesc, idisp, encoding, dir, markup, ilang){
+00034 }
+00035
+00036
+00037 <font class="comment">/******************************************************************************</font>
+00038 <font class="comment"> * RawCom Destructor - Cleans up instance of RawCom</font>
+00039 <font class="comment"> */</font>
+00040
+00041 RawCom::~RawCom()
+00042 {
+00043 }
+00044
+00045
+00046 <font class="comment">/******************************************************************************</font>
+00047 <font class="comment"> * RawCom::operator char * - Returns the correct verse when char * cast</font>
+00048 <font class="comment"> * is requested</font>
+00049 <font class="comment"> *</font>
+00050 <font class="comment"> * RET: string buffer with verse</font>
+00051 <font class="comment"> */</font>
+00052
+00053 <font class="keywordtype">char</font> *RawCom::getRawEntry() {
+00054 <font class="keywordtype">long</font> start = 0;
+00055 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = 0;
+00056 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00057
+00058 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00059 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00060 <font class="preprocessor">#endif</font>
+00061 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00062 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00063 <font class="preprocessor"></font> }
+00064 <font class="keywordflow">catch</font> ( ... ) {}
+00065 <font class="preprocessor">#endif</font>
+00066 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00067 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00068
+00069
+00070 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00071 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00072
+00073 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> newsize = (size + 2) * FILTERPAD;
+00074 <font class="keywordflow">if</font> (newsize &gt; entrybufallocsize) {
+00075 <font class="keywordflow">if</font> (entrybuf)
+00076 <font class="keyword">delete</font> [] entrybuf;
+00077 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ newsize ];
+00078 entrybufallocsize = newsize;
+00079 }
+00080 *entrybuf = 0;
+00081
+00082 gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, (size + 2), entrybuf);
+00083
+00084 rawFilter(entrybuf, size, key);
+00085
+00086 <font class="keywordflow">if</font> (!isUnicode())
+00087 preptext(entrybuf);
+00088
+00089 <font class="keywordflow">if</font> (key != this-&gt;key)
+00090 <font class="keyword">delete</font> key;
+00091
+00092 <font class="keywordflow">return</font> entrybuf;
+00093 }
+00094
+00095
+00096 <font class="comment">/******************************************************************************</font>
+00097 <font class="comment"> * RawCom::operator += - Increments module key a number of entries</font>
+00098 <font class="comment"> *</font>
+00099 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00100 <font class="comment"> *</font>
+00101 <font class="comment"> * RET: *this</font>
+00102 <font class="comment"> */</font>
+00103
+00104 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::operator +=(<font class="keywordtype">int</font> increment)
+00105 {
+00106 <font class="keywordtype">long</font> start;
+00107 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00108 <a class="code" href="class_verse_key.html">VerseKey</a> *tmpkey = 0;
+00109
+00110 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00111 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00112 <font class="preprocessor">#endif</font>
+00113 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00114 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00115 <font class="preprocessor"></font> }
+00116 <font class="keywordflow">catch</font> ( ... ) {}
+00117 <font class="preprocessor">#endif</font>
+00118 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00119 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(key);
+00120
+00121 findoffset(tmpkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), tmpkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00122
+00123 <a class="code" href="class_s_w_key.html">SWKey</a> lastgood = *tmpkey;
+00124 <font class="keywordflow">while</font> (increment) {
+00125 <font class="keywordtype">long</font> laststart = start;
+00126 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> lastsize = size;
+00127 <a class="code" href="class_s_w_key.html">SWKey</a> lasttry = *tmpkey;
+00128 (increment &gt; 0) ? (*key)++ : (*key)--;
+00129 <font class="keywordflow">if</font> (tmpkey != key)
+00130 <font class="keyword">delete</font> tmpkey;
+00131 tmpkey = 0;
+00132 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00133 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00134 <font class="preprocessor">#endif</font>
+00135 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00136 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00137 <font class="preprocessor"></font> }
+00138 <font class="keywordflow">catch</font> ( ... ) {}
+00139 <font class="preprocessor">#endif</font>
+00140 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00141 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(key);
+00142
+00143 <font class="keywordflow">if</font> ((error = key-&gt;Error())) {
+00144 *key = lastgood;
+00145 <font class="keywordflow">break</font>;
+00146 }
+00147 <font class="keywordtype">long</font> index = tmpkey-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00148 findoffset(tmpkey-&gt;Testament(), index, &amp;start, &amp;size);
+00149 <font class="keywordflow">if</font> ((((laststart != start) || (lastsize != size))||(!skipConsecutiveLinks)) &amp;&amp; (start &gt;= 0) &amp;&amp; (size)) {
+00150 increment += (increment &lt; 0) ? 1 : -1;
+00151 lastgood = *tmpkey;
+00152 }
+00153 }
+00154 error = (error) ? KEYERR_OUTOFBOUNDS : 0;
+00155
+00156 <font class="keywordflow">if</font> (tmpkey != key)
+00157 <font class="keyword">delete</font> tmpkey;
+00158
+00159 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00160 }
+00161
+00162 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00163 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00164 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00165 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00166 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00167 <font class="preprocessor">#endif</font>
+00168 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00169 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00170 <font class="preprocessor"></font> }
+00171 <font class="keywordflow">catch</font> ( ... ) {}
+00172 <font class="preprocessor">#endif</font>
+00173 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00174 <font class="keywordflow">if</font> (!key)
+00175 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00176
+00177 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), inbuf, len);
+00178
+00179 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00180 <font class="keyword">delete</font> key;
+00181
+00182 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00183 }
+00184
+00185 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00186 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00187 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00188 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00189 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00190 <font class="preprocessor">#endif</font>
+00191 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00192 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00193 <font class="preprocessor"></font> }
+00194 <font class="keywordflow">catch</font> ( ... ) {}
+00195 <font class="preprocessor">#endif</font>
+00196 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00197 <font class="keywordflow">if</font> (!key)
+00198 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00199
+00200 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), inbuf);
+00201
+00202 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00203 <font class="keyword">delete</font> key;
+00204
+00205 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00206 }
+00207
+00208
+00209 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00210 <a class="code" href="class_verse_key.html">VerseKey</a> *destkey = 0;
+00211 <font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *srckey = 0;
+00212 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00213 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00214 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00215 <font class="preprocessor">#endif</font>
+00216 <font class="preprocessor"></font> destkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00217 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00218 <font class="preprocessor"></font> }
+00219 <font class="keywordflow">catch</font> ( ... ) {}
+00220 <font class="preprocessor">#endif</font>
+00221 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00222 <font class="keywordflow">if</font> (!destkey)
+00223 destkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00224
+00225 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00226 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00227 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00228 <font class="preprocessor">#endif</font>
+00229 <font class="preprocessor"></font> srckey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, inkey);
+00230 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00231 <font class="preprocessor"></font> }
+00232 <font class="keywordflow">catch</font> ( ... ) {}
+00233 <font class="preprocessor">#endif</font>
+00234 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00235 <font class="keywordflow">if</font> (!srckey)
+00236 srckey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(inkey);
+00237
+00238 linkentry(destkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), destkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), srckey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>());
+00239
+00240 <font class="keywordflow">if</font> (this-&gt;key != destkey) <font class="comment">// free our key if we created a VerseKey</font>
+00241 <font class="keyword">delete</font> destkey;
+00242
+00243 <font class="keywordflow">if</font> (inkey != srckey) <font class="comment">// free our key if we created a VerseKey</font>
+00244 <font class="keyword">delete</font> srckey;
+00245
+00246 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00247 }
+00248
+00249
+00250 <font class="comment">/******************************************************************************</font>
+00251 <font class="comment"> * RawCom::deleteEntry - deletes this entry</font>
+00252 <font class="comment"> *</font>
+00253 <font class="comment"> * RET: *this</font>
+00254 <font class="comment"> */</font>
+00255
+00256 <font class="keywordtype">void</font> RawCom::deleteEntry() {
+00257
+00258 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00259
+00260 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00261 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00262 <font class="preprocessor">#endif</font>
+00263 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00264 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00265 <font class="preprocessor"></font> }
+00266 <font class="keywordflow">catch</font> ( ... ) {}
+00267 <font class="preprocessor">#endif</font>
+00268 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00269 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00270
+00271 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), <font class="stringliteral">""</font>);
+00272
+00273 <font class="keywordflow">if</font> (key != this-&gt;key)
+00274 <font class="keyword">delete</font> key;
+00275 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawcom_8h-source.html b/doc/api-documentation/html/rawcom_8h-source.html
new file mode 100644
index 0000000..ad92d79
--- /dev/null
+++ b/doc/api-documentation/html/rawcom_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawcom.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawcom.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawcom.h - code for class 'RawCom'- a module that reads raw commentary</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: rawcom_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef RAWCOM_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define RAWCOM_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swcom.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00031 <font class="keyword">class </font>SWDLLEXPORT RawCom:<font class="keyword">public</font> RawVerse, <font class="keyword">public</font> <a class="code" href="class_s_w_com.html">SWCom</a> {
+00032
+00033 <font class="keyword">public</font>:
+00034
+00035
+00036 RawCom (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc = 0,
+00037 <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00039 <font class="keyword">virtual</font> ~ RawCom ();
+00040 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a> ();
+00041
+00042 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a37">operator += </a>(<font class="keywordtype">int</font> increment);
+00043 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a36">operator -= </a>(<font class="keywordtype">int</font> decrement) { <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_s_w_module.html#a37">operator += </a>(-decrement); }
+00044
+00045 <font class="comment">// write interface ----------------------------</font>
+00046 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfp[0]-&gt;getFd() &gt; 0) &amp;&amp; ((idxfp[0]-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00047 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *path) { <font class="keywordflow">return</font> RawVerse::createModule (path); }
+00048 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00049 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00050 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00051 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00052 <font class="comment">// end write interface ------------------------</font>
+00053
+00054 };
+00055 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawfiles_8cpp-source.html b/doc/api-documentation/html/rawfiles_8cpp-source.html
new file mode 100644
index 0000000..7384a23
--- /dev/null
+++ b/doc/api-documentation/html/rawfiles_8cpp-source.html
@@ -0,0 +1,305 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawfiles.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawfiles.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawfiles.cpp - code for class 'RawFiles'- a module that produces HTML HREFs</font>
+00003 <font class="comment"> * pointing to actual text desired. Uses standard</font>
+00004 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifndef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00014 <font class="preprocessor">#else</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00016 <font class="preprocessor">#endif</font>
+00017 <font class="preprocessor"></font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;rawfiles.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00023
+00024 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00026 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00027 <font class="preprocessor"></font>
+00028
+00029 <font class="comment">/******************************************************************************</font>
+00030 <font class="comment"> * RawFiles Constructor - Initializes data for instance of RawFiles</font>
+00031 <font class="comment"> *</font>
+00032 <font class="comment"> * ENT: iname - Internal name for module</font>
+00033 <font class="comment"> * idesc - Name to display to user for module</font>
+00034 <font class="comment"> * idisp - Display object to use for displaying</font>
+00035 <font class="comment"> */</font>
+00036
+00037 RawFiles::RawFiles(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : RawVerse(ipath, O_RDWR), <a class="code" href="class_s_w_com.html">SWCom</a>(iname, idesc, idisp, enc, dir, mark, ilang)
+00038 {
+00039 }
+00040
+00041
+00042 <font class="comment">/******************************************************************************</font>
+00043 <font class="comment"> * RawFiles Destructor - Cleans up instance of RawFiles</font>
+00044 <font class="comment"> */</font>
+00045
+00046 RawFiles::~RawFiles()
+00047 {
+00048 }
+00049
+00050
+00051 <font class="comment">/******************************************************************************</font>
+00052 <font class="comment"> * RawFiles::operator char * - Returns the correct verse when char * cast</font>
+00053 <font class="comment"> * is requested</font>
+00054 <font class="comment"> *</font>
+00055 <font class="comment"> * RET: string buffer with verse</font>
+00056 <font class="comment"> */</font>
+00057
+00058 <font class="keywordtype">char</font> *RawFiles::getRawEntry() {
+00059 FileDesc *datafile;
+00060 <font class="keywordtype">long</font> start = 0;
+00061 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = 0;
+00062 <font class="keywordtype">char</font> *tmpbuf;
+00063 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00064
+00065 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00066 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00067 <font class="preprocessor">#endif</font>
+00068 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00069 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00070 <font class="preprocessor"></font> }
+00071 <font class="keywordflow">catch</font> ( ... ) {}
+00072 <font class="preprocessor">#endif</font>
+00073 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00074 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00075
+00076 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00077
+00078 <font class="keywordflow">if</font> (entrybuf)
+00079 <font class="keyword">delete</font> [] entrybuf;
+00080
+00081 <font class="keywordflow">if</font> (size) {
+00082 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ (size + 2) + strlen(path) + 5 ];
+00083 sprintf(tmpbuf,<font class="stringliteral">"%s/"</font>,path);
+00084 gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, (size + 2), tmpbuf+strlen(tmpbuf));
+00085 datafile = FileMgr::systemFileMgr.open(tmpbuf, O_RDONLY|O_BINARY);
+00086 <font class="keyword">delete</font> [] tmpbuf;
+00087 <font class="keywordflow">if</font> (datafile-&gt;getFd() &gt; 0) {
+00088 size = lseek(datafile-&gt;getFd(), 0, SEEK_END);
+00089 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size * FILTERPAD ];
+00090 memset(entrybuf, 0, size * FILTERPAD);
+00091 lseek(datafile-&gt;getFd(), 0, SEEK_SET);
+00092 read(datafile-&gt;getFd(), entrybuf, size);
+00093 <font class="comment">// preptext(entrybuf);</font>
+00094 }
+00095 <font class="keywordflow">else</font> {
+00096 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [2];
+00097 entrybuf[0] = 0;
+00098 entrybuf[1] = 0;
+00099 }
+00100 FileMgr::systemFileMgr.close(datafile);
+00101 }
+00102 <font class="keywordflow">else</font> {
+00103 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [2];
+00104 entrybuf[0] = 0;
+00105 entrybuf[1] = 0;
+00106 }
+00107
+00108 <font class="keywordflow">if</font> (key != this-&gt;key)
+00109 <font class="keyword">delete</font> key;
+00110
+00111 <font class="keywordflow">return</font> entrybuf;
+00112 }
+00113
+00114
+00115 <font class="comment">/******************************************************************************</font>
+00116 <font class="comment"> * RawFiles::operator &lt;&lt; (char *)- Update the modules current key entry with</font>
+00117 <font class="comment"> * provided text</font>
+00118 <font class="comment"> *</font>
+00119 <font class="comment"> * RET: *this</font>
+00120 <font class="comment"> */</font>
+00121
+00122 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawFiles::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00123 FileDesc *datafile;
+00124 <font class="keywordtype">long</font> start;
+00125 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00126 <font class="keywordtype">char</font> *tmpbuf;
+00127 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00128
+00129 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00130 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00131 <font class="preprocessor">#endif</font>
+00132 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00133 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00134 <font class="preprocessor"></font> }
+00135 <font class="keywordflow">catch</font> ( ... ) {}
+00136 <font class="preprocessor">#endif</font>
+00137 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00138 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00139
+00140 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00141
+00142 <font class="keywordflow">if</font> (size) {
+00143 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ (size + 2) + strlen(path) + 1 ];
+00144 sprintf(tmpbuf, <font class="stringliteral">"%s/"</font>, path);
+00145 gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, (size + 2), tmpbuf+strlen(tmpbuf));
+00146 }
+00147 <font class="keywordflow">else</font> {
+00148 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ 16 + strlen(path) + 1 ];
+00149 sprintf(tmpbuf, <font class="stringliteral">"%s/%s"</font>, path, getnextfilename());
+00150 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), tmpbuf+strlen(path)+1);
+00151 }
+00152 datafile = FileMgr::systemFileMgr.open(tmpbuf, O_CREAT|O_WRONLY|O_BINARY|O_TRUNC);
+00153 <font class="keyword">delete</font> [] tmpbuf;
+00154 <font class="keywordflow">if</font> (datafile-&gt;getFd() &gt; 0) {
+00155 write(datafile-&gt;getFd(), inbuf, strlen(inbuf));
+00156 }
+00157 FileMgr::systemFileMgr.close(datafile);
+00158
+00159 <font class="keywordflow">if</font> (key != this-&gt;key)
+00160 <font class="keyword">delete</font> key;
+00161
+00162 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00163 }
+00164
+00165
+00166 <font class="comment">/******************************************************************************</font>
+00167 <font class="comment"> * RawFiles::operator &lt;&lt; (SWKey *)- Link the modules current key entry with</font>
+00168 <font class="comment"> * another module entry</font>
+00169 <font class="comment"> *</font>
+00170 <font class="comment"> * RET: *this</font>
+00171 <font class="comment"> */</font>
+00172
+00173 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawFiles::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00174
+00175 <font class="keywordtype">long</font> start;
+00176 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00177 <font class="keywordtype">char</font> *tmpbuf;
+00178 <font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00179
+00180 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00181 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00182 <font class="preprocessor">#endif</font>
+00183 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, inkey);
+00184 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00185 <font class="preprocessor"></font> }
+00186 <font class="keywordflow">catch</font> ( ... ) {}
+00187 <font class="preprocessor">#endif</font>
+00188 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00189 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00190
+00191 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00192
+00193 <font class="keywordflow">if</font> (size) {
+00194 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size + 2];
+00195 gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, size + 2, tmpbuf);
+00196
+00197 <font class="keywordflow">if</font> (key != inkey)
+00198 <font class="keyword">delete</font> key;
+00199 key = 0;
+00200
+00201 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00202 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00203 <font class="preprocessor">#endif</font>
+00204 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, inkey);
+00205 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00206 <font class="preprocessor"></font> }
+00207 <font class="keywordflow">catch</font> ( ... ) {}
+00208 <font class="preprocessor">#endif</font>
+00209 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00210 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00211 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), tmpbuf);
+00212 }
+00213
+00214 <font class="keywordflow">if</font> (key != inkey)
+00215 <font class="keyword">delete</font> key;
+00216
+00217 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00218 }
+00219
+00220
+00221 <font class="comment">/******************************************************************************</font>
+00222 <font class="comment"> * RawFiles::deleteEntry - deletes this entry</font>
+00223 <font class="comment"> *</font>
+00224 <font class="comment"> * RET: *this</font>
+00225 <font class="comment"> */</font>
+00226
+00227 <font class="keywordtype">void</font> RawFiles::deleteEntry() {
+00228
+00229 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00230
+00231 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00232 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00233 <font class="preprocessor">#endif</font>
+00234 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00235 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00236 <font class="preprocessor"></font> }
+00237 <font class="keywordflow">catch</font> ( ... ) {}
+00238 <font class="preprocessor">#endif</font>
+00239 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00240 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00241
+00242 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), <font class="stringliteral">""</font>);
+00243
+00244 <font class="keywordflow">if</font> (key != this-&gt;key)
+00245 <font class="keyword">delete</font> key;
+00246 }
+00247
+00248
+00249 <font class="comment">/******************************************************************************</font>
+00250 <font class="comment"> * RawFiles::getnextfilename - generates a valid filename in which to store</font>
+00251 <font class="comment"> * an entry</font>
+00252 <font class="comment"> *</font>
+00253 <font class="comment"> * RET: filename</font>
+00254 <font class="comment"> */</font>
+00255
+00256 <font class="keywordtype">char</font> *RawFiles::getnextfilename() {
+00257 <font class="keyword">static</font> <font class="keywordtype">char</font> incfile[255];
+00258 <font class="keywordtype">long</font> number;
+00259 FileDesc *datafile;
+00260
+00261 sprintf(incfile, <font class="stringliteral">"%s/incfile"</font>, path);
+00262 datafile = FileMgr::systemFileMgr.open(incfile, O_RDONLY|O_BINARY);
+00263 <font class="keywordflow">if</font> (read(datafile-&gt;getFd(), &amp;number, 4) != 4)
+00264 number = 0;
+00265 number++;
+00266 FileMgr::systemFileMgr.close(datafile);
+00267
+00268 datafile = FileMgr::systemFileMgr.open(incfile, O_CREAT|O_WRONLY|O_BINARY|O_TRUNC);
+00269 write(datafile-&gt;getFd(), &amp;number, 4);
+00270 FileMgr::systemFileMgr.close(datafile);
+00271 sprintf(incfile, <font class="stringliteral">"%.7ld"</font>, number-1);
+00272 <font class="keywordflow">return</font> incfile;
+00273 }
+00274
+00275
+00276 <font class="keywordtype">char</font> RawFiles::createModule (<font class="keyword">const</font> <font class="keywordtype">char</font> *path) {
+00277 <font class="keywordtype">char</font> *incfile = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (path) + 16 ];
+00278 <font class="keyword">static</font> <font class="keywordtype">long</font> zero = 0;
+00279 FileDesc *datafile;
+00280
+00281 sprintf(incfile, <font class="stringliteral">"%s/incfile"</font>, path);
+00282 datafile = FileMgr::systemFileMgr.open(incfile, O_CREAT|O_WRONLY|O_BINARY|O_TRUNC);
+00283 <font class="keyword">delete</font> [] incfile;
+00284 write(datafile-&gt;getFd(), &amp;zero, 4);
+00285 FileMgr::systemFileMgr.close(datafile);
+00286
+00287 <font class="keywordflow">return</font> RawVerse::createModule (path);
+00288 }
+00289
+00290
+00291
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawfiles_8h-source.html b/doc/api-documentation/html/rawfiles_8h-source.html
new file mode 100644
index 0000000..5935e4e
--- /dev/null
+++ b/doc/api-documentation/html/rawfiles_8h-source.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawfiles.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawfiles.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawfiles.h - code for class 'RawFiles'- a module that produces HTML HREFs</font>
+00003 <font class="comment"> * pointing to actual text desired. Uses standard</font>
+00004 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * $Id: rawfiles_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00009 <font class="comment"> * CrossWire Bible Society</font>
+00010 <font class="comment"> * P. O. Box 2528</font>
+00011 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00014 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00015 <font class="comment"> * Free Software Foundation version 2.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00018 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00019 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00020 <font class="comment"> * General Public License for more details.</font>
+00021 <font class="comment"> *</font>
+00022 <font class="comment"> */</font>
+00023
+00024 <font class="preprocessor">#ifndef RAWFILES_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define RAWFILES_H</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swcom.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT RawFiles:<font class="keyword">public</font> RawVerse, <font class="keyword">public</font> <a class="code" href="class_s_w_com.html">SWCom</a>
+00033 {
+00034
+00035 <font class="keywordtype">char</font> *getnextfilename ();
+00036
+00037 <font class="keyword">public</font>:
+00038
+00039
+00040 RawFiles (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc =
+00041 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00042 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00043 <font class="keyword">virtual</font> ~RawFiles ();
+00044 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a> ();
+00045
+00046 <font class="comment">// write interface ----------------------------</font>
+00050 <font class="comment"></font> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfp[0]-&gt;getFd() &gt; 0) &amp;&amp; ((idxfp[0]-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00051
+00056 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *);
+00057
+00062 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *);
+00063
+00068 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *);
+00069
+00073 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> ();
+00074 <font class="comment">// end write interface ------------------------</font>
+00075 };
+00076
+00077
+00078 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawfilesgen_8cpp-source.html b/doc/api-documentation/html/rawfilesgen_8cpp-source.html
new file mode 100644
index 0000000..85badac
--- /dev/null
+++ b/doc/api-documentation/html/rawfilesgen_8cpp-source.html
@@ -0,0 +1,250 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawfilesgen.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawfilesgen.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> */</font>
+00004
+00005 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00006 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00009
+00010 <font class="preprocessor">#ifndef __GNUC__</font>
+00011 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00012 <font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00017 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00018
+00019 <font class="preprocessor">#ifndef O_BINARY</font>
+00020 <font class="preprocessor"></font><font class="preprocessor"> #define O_BINARY 0</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00024 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size);
+00025 <font class="keywordtype">void</font> openfiles();
+00026 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00027 <font class="keywordtype">void</font> charsetconvert(<font class="keywordtype">char</font> *data);
+00028
+00029
+00030 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00031 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00032 <font class="keywordtype">long</font> chapoffset;
+00033 <font class="keywordtype">short</font> chapsize;
+00034 <font class="keywordtype">char</font> testmnt;
+00035 <font class="keywordtype">char</font> startflag = 0;
+00036
+00037
+00038 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00039 {
+00040 <font class="keywordtype">long</font> pos, offset;
+00041 <font class="keywordtype">int</font> num1, num2, rangemax, curbook = 0, curchap = 0, curverse = 0;
+00042 <font class="keywordtype">char</font> buf[127];
+00043 <font class="keywordtype">short</font> size, tmp;
+00044 <font class="keyword">extern</font> <font class="keyword">struct </font>zonline online;
+00045
+00046 checkparams(argc, argv);
+00047
+00048 key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00049
+00050 openfiles();
+00051
+00052 num1 = key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00053 num2 = key1.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00054
+00055 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00056 <font class="keywordflow">if</font> (!startflag) {
+00057 startflag = 1;
+00058 }
+00059 <font class="keywordflow">else</font> {
+00060 <font class="keywordflow">if</font> (num2 &lt; key2.<a class="code" href="class_verse_key.html#a25">Verse</a>()) { <font class="comment">// new chapter</font>
+00061 <font class="keywordflow">if</font> (num1 &lt;= key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>()) { <font class="comment">// new book</font>
+00062 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00063 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00064 key2.<a class="code" href="class_verse_key.html#a23">Book</a>(key2.<a class="code" href="class_verse_key.html#a23">Book</a>()+1);
+00065 }
+00066 printf(<font class="stringliteral">"Created Empty Entry: %d ('%s')\n"</font>, num1, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key2);
+00067 chapoffset = offset;
+00068 chapsize = size;
+00069 <font class="comment">// continue;</font>
+00070 }
+00071 }
+00072 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00073 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00074 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(num2);
+00075
+00076 key3 = key2;
+00077 <font class="comment">// key3 += (rangemax - key3.Verse());</font>
+00078
+00079 writeidx(key1, key2, key3, offset, size);
+00080 }
+00081 close(vfp);
+00082 close(cfp);
+00083 close(bfp);
+00084 close(fp);
+00085 }
+00086
+00087
+00088 <font class="comment">/**************************************************************************</font>
+00089 <font class="comment"> * ENT: key1 - current location of index</font>
+00090 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00091 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00092 <font class="comment"> */</font>
+00093
+00094 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00095 {
+00096 <font class="keywordtype">long</font> pos;
+00097 <font class="keywordtype">short</font> tmp;
+00098
+00099 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00100 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00101 pos = lseek(cfp, 0, SEEK_CUR);
+00102 write(bfp, &amp;pos, 4);
+00103 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00104 write(cfp, &amp;pos, 4);
+00105 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Book intro (vss) set to same as chap for now(it should be chap 1 which usually contains the book into anyway)*/</font>
+00106 write(vfp, &amp;chapsize, 2);
+00107 }
+00108 pos = lseek(vfp, 0, SEEK_CUR);
+00109 write(cfp, &amp;pos, 4);
+00110 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00111 write(vfp, &amp;chapsize, 2);
+00112 }
+00113 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00114 write(vfp, &amp;offset, 4);
+00115 size = 0;
+00116 write(vfp, &amp;size, 2);
+00117 }
+00118 <font class="keywordflow">else</font> {
+00119 pos = 0;
+00120 tmp = 0;
+00121 write(vfp, &amp;pos, 4);
+00122 write(vfp, &amp;tmp, 2);
+00123 }
+00124 key1++;
+00125 }
+00126
+00127
+00128 <font class="keyword">static</font> <a class="code" href="class_verse_key.html">VerseKey</a> inckey = <font class="stringliteral">"Genesis 1:1"</font>;
+00129
+00130 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size)
+00131 {
+00132 <font class="keywordtype">char</font> buf[7];
+00133 <font class="keywordtype">char</font> buf2[20];
+00134 <font class="keywordtype">char</font> ch;
+00135 <font class="keywordtype">char</font> loop;
+00136 <font class="keywordtype">long</font> offset2;
+00137 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00138 <font class="keywordtype">bool</font> flag;
+00139 <font class="keywordtype">long</font> chapstart = 0;
+00140 <font class="keyword">static</font> <font class="keywordtype">int</font> olbvnum = 0;
+00141 <font class="keywordtype">char</font> data[16];
+00142
+00143 memset (data,0,16);
+00144
+00145 <font class="keywordflow">if</font> (++olbvnum &lt;= 31102) {
+00146
+00147 <font class="keywordflow">if</font> (olbvnum == 23146) { <font class="comment">// "Matthew 1:1" </font>
+00148 close(vfp);
+00149 close(cfp);
+00150 close(bfp);
+00151 close(fp);
+00152 key1 = key2 = key3 = inckey = <font class="stringliteral">"Matthew 1:1"</font>;
+00153 openfiles();
+00154 startflag = 0;
+00155 }
+00156
+00157
+00158 *offset = lseek(fp, 0, SEEK_CUR);
+00159
+00160 <font class="keywordflow">if</font> ((olbvnum!=1) &amp;&amp; (olbvnum != 23146))
+00161 inckey++;
+00162
+00163 *num1 = inckey.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00164 *num2 = inckey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00165
+00166
+00167 write(fp, data, 16);
+00168
+00169 *size = lseek(fp, 0, SEEK_CUR) - *offset;
+00170 <font class="keywordflow">return</font> 0;
+00171 }
+00172 <font class="keywordflow">return</font> 1;
+00173 }
+00174
+00175
+00176 <font class="keywordtype">void</font> openfiles()
+00177 {
+00178 <font class="keywordtype">char</font> buf[255];
+00179 <font class="keywordtype">char</font> fname[5];
+00180 <font class="keywordtype">long</font> pos;
+00181 <font class="keywordtype">short</font> size;
+00182
+00183 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00184
+00185 strcpy(fname, (testmnt==2) ? <font class="stringliteral">"nt"</font> : <font class="stringliteral">"ot"</font>);
+00186 unlink(fname);
+00187 <font class="keywordflow">if</font> ((fp = open(fname, O_CREAT|O_RDWR|O_BINARY)) == -1) {
+00188 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00189 exit(1);
+00190 }
+00191
+00192 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00193 unlink(buf);
+00194 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00195 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00196 exit(1);
+00197 }
+00198
+00199 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00200 unlink(buf);
+00201 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00202 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00203 exit(1);
+00204 }
+00205
+00206 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00207 unlink(buf);
+00208 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00209 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00210 exit(1);
+00211 }
+00212
+00213 pos = 0;
+00214 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00215 pos = 4;
+00216 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00217
+00218
+00219 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00220 pos = 0;
+00221 size = 0;
+00222 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00223 write(vfp, &amp;size, 2);
+00224 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00225 write(vfp, &amp;size, 2);
+00226
+00227 }
+00228
+00229
+00230 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00231 {
+00232 <font class="keywordflow">if</font> (argc !=1) {
+00233 fprintf(stderr, <font class="stringliteral">"usage: %s\n"</font>, argv[0]);
+00234 exit(1);
+00235 }
+00236 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawgbf_2gbfidx_8cpp-source.html b/doc/api-documentation/html/rawgbf_2gbfidx_8cpp-source.html
new file mode 100644
index 0000000..2c61994
--- /dev/null
+++ b/doc/api-documentation/html/rawgbf_2gbfidx_8cpp-source.html
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfidx.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * This code wreaks but works (at least for WEB). Good luck!</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00019
+00020
+00021 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00022 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size);
+00023 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname);
+00024 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00025
+00026
+00027 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00028 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00029 <font class="keywordtype">long</font> chapoffset;
+00030 <font class="keywordtype">short</font> chapsize;
+00031 <font class="keywordtype">char</font> testmnt;
+00032
+00033
+00034 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00035 {
+00036 <font class="keywordtype">long</font> pos, offset;
+00037 <font class="keywordtype">int</font> num1, num2, rangemax, curbook = 0, curchap = 0, curverse = 0;
+00038 <font class="keywordtype">char</font> buf[127], startflag = 0;
+00039 <font class="keywordtype">short</font> size, tmp;
+00040
+00041 checkparams(argc, argv);
+00042
+00043 openfiles(argv[1]);
+00044
+00045 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00046 num1 = key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00047 num2 = key1.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00048 pos = 0;
+00049 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00050 pos = 4;
+00051 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00052
+00053
+00054 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00055 pos = 0;
+00056 size = 0;
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00060 write(vfp, &amp;size, 2);
+00061
+00062 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00063 <font class="keywordflow">if</font> (!startflag) {
+00064 startflag = 1;
+00065 }
+00066 <font class="keywordflow">else</font> {
+00067 <font class="keywordflow">if</font> (num2 &lt; key2.<a class="code" href="class_verse_key.html#a25">Verse</a>()) { <font class="comment">// new chapter</font>
+00068 <font class="keywordflow">if</font> (num1 &lt;= key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>()) { <font class="comment">// new book</font>
+00069 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00070 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00071 key2.<a class="code" href="class_verse_key.html#a23">Book</a>(key2.<a class="code" href="class_verse_key.html#a23">Book</a>()+1);
+00072 }
+00073 printf(<font class="stringliteral">"Found Chapter Break: %d ('%s')\n"</font>, num1, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key2);
+00074 chapoffset = offset;
+00075 chapsize = size;
+00076 <font class="comment">// continue;</font>
+00077 }
+00078 }
+00079 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00080 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00081 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(num2);
+00082
+00083 key3 = key2;
+00084 <font class="comment">// key3 += (rangemax - key3.Verse());</font>
+00085
+00086 writeidx(key1, key2, key3, offset, size);
+00087 }
+00088 close(vfp);
+00089 close(cfp);
+00090 close(bfp);
+00091 close(fp);
+00092 }
+00093
+00094
+00095 <font class="comment">/**************************************************************************</font>
+00096 <font class="comment"> * ENT: key1 - current location of index</font>
+00097 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00098 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00099 <font class="comment"> */</font>
+00100
+00101 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00102 {
+00103 <font class="keywordtype">long</font> pos;
+00104 <font class="keywordtype">short</font> tmp;
+00105
+00106 <font class="keywordflow">for</font> (; ((key1 &lt;= key3) &amp;&amp; (key1.<a class="code" href="class_s_w_key.html#a6">Error</a>() != KEYERR_OUTOFBOUNDS) &amp;&amp; (key1.<a class="code" href="class_verse_key.html#a22">Testament</a>() == testmnt)); key1+=1) {
+00107 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00108 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00109 pos = lseek(cfp, 0, SEEK_CUR);
+00110 write(bfp, &amp;pos, 4);
+00111 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00112 write(cfp, &amp;pos, 4);
+00113 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Book intro (vss) set to same as chap for now(it should be chap 1 which usually contains the book into anyway)*/</font>
+00114 write(vfp, &amp;chapsize, 2);
+00115 }
+00116 pos = lseek(vfp, 0, SEEK_CUR);
+00117 write(cfp, &amp;pos, 4);
+00118 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00119 write(vfp, &amp;chapsize, 2);
+00120 }
+00121 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00122 write(vfp, &amp;offset, 4);
+00123 write(vfp, &amp;size, 2);
+00124 }
+00125 <font class="keywordflow">else</font> {
+00126 pos = 0;
+00127 tmp = 0;
+00128 write(vfp, &amp;pos, 4);
+00129 write(vfp, &amp;tmp, 2);
+00130 }
+00131 }
+00132 }
+00133
+00134
+00135 <font class="keywordtype">char</font> startchap(<font class="keywordtype">char</font> *buf)
+00136 {
+00137 <font class="keywordtype">char</font> loop;
+00138
+00139 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00140 <font class="keywordflow">return</font> 0;
+00141 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'S'</font>)
+00142 <font class="keywordflow">return</font> 0;
+00143 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'C'</font>)
+00144 <font class="keywordflow">return</font> 0;
+00145 <font class="comment">/*</font>
+00146 <font class="comment"> if (!isdigit(buf[2]))</font>
+00147 <font class="comment"> return 0;</font>
+00148 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00149 <font class="comment"> if (buf[loop] == ' ')</font>
+00150 <font class="comment"> break;</font>
+00151 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00152 <font class="comment"> return 0;</font>
+00153 <font class="comment"> }</font>
+00154 <font class="comment">*/</font>
+00155 <font class="keywordflow">return</font> 1;
+00156 }
+00157
+00158
+00159 <font class="keywordtype">char</font> startentry(<font class="keywordtype">char</font> *buf)
+00160 {
+00161 <font class="keywordtype">char</font> loop;
+00162
+00163 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00164 <font class="keywordflow">return</font> 0;
+00165 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'S'</font>)
+00166 <font class="keywordflow">return</font> 0;
+00167 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'V'</font>)
+00168 <font class="keywordflow">return</font> 0;
+00169 <font class="comment">/*</font>
+00170 <font class="comment"> if (!isdigit(buf[2]))</font>
+00171 <font class="comment"> return 0;</font>
+00172 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00173 <font class="comment"> if (buf[loop] == ' ')</font>
+00174 <font class="comment"> break;</font>
+00175 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00176 <font class="comment"> return 0;</font>
+00177 <font class="comment"> }</font>
+00178 <font class="comment">*/</font>
+00179 <font class="keywordflow">return</font> 1;
+00180 }
+00181
+00182
+00183 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size)
+00184 {
+00185 <font class="keywordtype">char</font> buf[7];
+00186 <font class="keywordtype">char</font> buf2[20];
+00187 <font class="keywordtype">char</font> ch;
+00188 <font class="keywordtype">char</font> loop;
+00189 <font class="keywordtype">long</font> offset2;
+00190 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00191 <font class="keywordtype">bool</font> flag;
+00192 <font class="keywordtype">long</font> chapstart = 0;
+00193
+00194 memset(buf, <font class="charliteral">' '</font>, 7);
+00195
+00196 <font class="keywordflow">while</font> (1) {
+00197 <font class="keywordflow">if</font> (startchap(buf)) {
+00198 chapstart = lseek(fp, 0, SEEK_CUR) - 7;
+00199 memset(buf, <font class="charliteral">' '</font>, 3);
+00200 flag = <font class="keyword">false</font>;
+00201 <font class="keywordflow">for</font> (loop = 3; loop &lt; 6; loop++) {
+00202 <font class="keywordflow">if</font> (isdigit(buf[loop]))
+00203 flag = <font class="keyword">true</font>;
+00204 <font class="keywordflow">else</font> {
+00205 buf[loop] = 0;
+00206 <font class="keywordflow">break</font>;
+00207 }
+00208 }
+00209 <font class="keywordflow">if</font> (flag)
+00210 *num1 = atoi(buf);
+00211 <font class="keywordflow">else</font> (*num1)++;
+00212 }
+00213 <font class="keywordflow">if</font> (startentry(buf)) {
+00214 memset(buf, <font class="charliteral">' '</font>, 3);
+00215 flag = <font class="keyword">false</font>;
+00216 <font class="keywordflow">for</font> (loop = 3; loop &lt; 6; loop++) {
+00217 <font class="keywordflow">if</font> (isdigit(buf[loop]))
+00218 flag = <font class="keyword">true</font>;
+00219 <font class="keywordflow">else</font> {
+00220 buf[loop] = 0;
+00221 <font class="keywordflow">break</font>;
+00222 }
+00223 <font class="keywordflow">if</font> (flag)
+00224 *num2 = atoi(buf);
+00225 <font class="keywordflow">else</font> (*num2)++;
+00226 }
+00227 loop++;
+00228 <font class="keywordflow">if</font> (size)
+00229 *offset = lseek(fp, 0, SEEK_CUR) - (7 - loop);
+00230 <font class="keywordflow">else</font> *offset = (chapstart) ? chapstart : lseek(fp, 0, SEEK_CUR) - 7;
+00231 <font class="keywordflow">if</font> (size) {
+00232 ch2 = *num1;
+00233 vs2 = *num2;
+00234 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00235 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00236 }
+00237 <font class="keywordflow">else</font> {
+00238 <font class="keywordflow">if</font> (vs2) {
+00239 *size = (offset2 - (*offset));
+00240 }
+00241 }
+00242 lseek(fp, *offset, SEEK_SET);
+00243 }
+00244 <font class="keywordflow">return</font> 0;
+00245 }
+00246 memmove(buf, &amp;buf[1], 6);
+00247 <font class="keywordflow">if</font> (read(fp, &amp;buf[6], 1) != 1)
+00248 <font class="keywordflow">return</font> 1;
+00249 }
+00250 }
+00251
+00252
+00253 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname)
+00254 {
+00255 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00256 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00257 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00258 <font class="preprocessor"></font> <font class="keywordtype">char</font> buf[255];
+00259
+00260 <font class="keywordflow">if</font> ((fp = open(fname, O_RDONLY|O_BINARY)) == -1) {
+00261 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00262 exit(1);
+00263 }
+00264
+00265 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00266 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00267 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00268 exit(1);
+00269 }
+00270
+00271 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00272 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00273 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00274 exit(1);
+00275 }
+00276
+00277 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00278 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY|O_BINARY)) == -1) {
+00279 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00280 exit(1);
+00281 }
+00282 }
+00283
+00284
+00285 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00286 {
+00287 <font class="keywordflow">if</font> (argc &lt; 2) {
+00288 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt - for new testmt file]\n"</font>, argv[0]);
+00289 exit(1);
+00290 }
+00291 <font class="keywordflow">if</font> (argc == 3)
+00292 key1 = key2 = key3 = <font class="stringliteral">"Matthew 1:1"</font>;
+00293 <font class="keywordflow">else</font> key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00294 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawgbf_8cpp-source.html b/doc/api-documentation/html/rawgbf_8cpp-source.html
new file mode 100644
index 0000000..23d9c7e
--- /dev/null
+++ b/doc/api-documentation/html/rawgbf_8cpp-source.html
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawgbf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawgbf.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawgbf.cpp - code for class 'RawGBF'- a module that reads raw text files:</font>
+00003 <font class="comment"> * ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;rawgbf.h&gt;</font>
+00021
+00022
+00023 <font class="comment">/******************************************************************************</font>
+00024 <font class="comment"> * RawGBF Constructor - Initializes data for instance of RawGBF</font>
+00025 <font class="comment"> *</font>
+00026 <font class="comment"> * ENT: iname - Internal name for module</font>
+00027 <font class="comment"> * idesc - Name to display to user for module</font>
+00028 <font class="comment"> * idisp - Display object to use for displaying</font>
+00029 <font class="comment"> */</font>
+00030
+00031 RawGBF::RawGBF(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp) : <a class="code" href="class_s_w_text.html">SWText</a>(iname, idesc, idisp), RawVerse(ipath)
+00032 {
+00033 }
+00034
+00035
+00036 <font class="comment">/******************************************************************************</font>
+00037 <font class="comment"> * RawGBF Destructor - Cleans up instance of RawGBF</font>
+00038 <font class="comment"> */</font>
+00039
+00040 RawGBF::~RawGBF()
+00041 {
+00042 }
+00043
+00044
+00045 <font class="comment">/******************************************************************************</font>
+00046 <font class="comment"> * RawGBF::operator char * - Returns the correct verse when char * cast</font>
+00047 <font class="comment"> * is requested</font>
+00048 <font class="comment"> *</font>
+00049 <font class="comment"> * RET: string buffer with verse</font>
+00050 <font class="comment"> */</font>
+00051
+00052 RawGBF::operator char*()
+00053 {
+00054 <font class="keywordtype">long</font> start;
+00055 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00056 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00057
+00058 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00059 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00060 <font class="preprocessor">#endif</font>
+00061 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00062 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00063 <font class="preprocessor"></font> }
+00064 <font class="keywordflow">catch</font> ( ... ) {}
+00065 <font class="preprocessor">#endif</font>
+00066 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00067 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00068
+00069
+00070 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00071
+00072 <font class="keywordflow">if</font> (entrybuf)
+00073 <font class="keyword">delete</font> [] entrybuf;
+00074 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size * 3 ]; <font class="comment">// extra for conversion to RTF or other.</font>
+00075
+00076 gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, size + 1, entrybuf);
+00077 preptext(entrybuf);
+00078 RenderText(entrybuf, size * 3);
+00079
+00080 <font class="keywordflow">if</font> (key != this-&gt;key)
+00081 <font class="keyword">delete</font> key;
+00082
+00083 <font class="keywordflow">return</font> entrybuf;
+00084 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawgbf_8h-source.html b/doc/api-documentation/html/rawgbf_8h-source.html
new file mode 100644
index 0000000..ca89793
--- /dev/null
+++ b/doc/api-documentation/html/rawgbf_8h-source.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawgbf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawgbf.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawgbf.h - code for class 'RawGBF'- a module that reads raw text files:</font>
+00003 <font class="comment"> * ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: rawgbf_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef RAWGBF_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define RAWGBF_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swtext.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT RawGBF:<font class="keyword">public</font> <a class="code" href="class_s_w_text.html">SWText</a>, <font class="keyword">public</font> RawVerse
+00033 {
+00034
+00035 <font class="keyword">public</font>:
+00036
+00037
+00038 RawGBF (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc =
+00039 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0);
+00040 <font class="keyword">virtual</font> ~ RawGBF ();
+00041 <font class="keyword">virtual</font> operator char *();
+00042 };
+00043
+00044
+00045 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawgenbook_8cpp-source.html b/doc/api-documentation/html/rawgenbook_8cpp-source.html
new file mode 100644
index 0000000..83f1136
--- /dev/null
+++ b/doc/api-documentation/html/rawgenbook_8cpp-source.html
@@ -0,0 +1,256 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawgenbook.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawgenbook.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawtext.cpp - code for class 'RawGenBook'- a module that reads raw text files:</font>
+00003 <font class="comment"> * ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00009
+00010 <font class="preprocessor">#ifndef __GNUC__</font>
+00011 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00012 <font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00017 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;rawgenbook.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;rawstr.h&gt;</font>
+00020
+00021 <font class="preprocessor">#ifndef O_BINARY</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="comment">/******************************************************************************</font>
+00026 <font class="comment"> * RawGenBook Constructor - Initializes data for instance of RawGenBook</font>
+00027 <font class="comment"> *</font>
+00028 <font class="comment"> * ENT: iname - Internal name for module</font>
+00029 <font class="comment"> * idesc - Name to display to user for module</font>
+00030 <font class="comment"> * idisp - Display object to use for displaying</font>
+00031 <font class="comment"> */</font>
+00032
+00033 RawGenBook::RawGenBook(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang)
+00034 : <a class="code" href="class_s_w_gen_book.html">SWGenBook</a>(iname, idesc, idisp, enc, dir, mark, ilang) {
+00035 <font class="keywordtype">int</font> fileMode = O_RDWR;
+00036 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00037
+00038 entryBuf = 0;
+00039 path = 0;
+00040 stdstr(&amp;path, ipath);
+00041
+00042
+00043 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00044 path[strlen(path)-1] = 0;
+00045
+00046 <font class="keyword">delete</font> key;
+00047 key = CreateKey();
+00048
+00049
+00050 sprintf(buf, <font class="stringliteral">"%s.bdt"</font>, path);
+00051 bdtfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00052
+00053 <font class="keyword">delete</font> [] buf;
+00054
+00055 }
+00056
+00057
+00058 <font class="comment">/******************************************************************************</font>
+00059 <font class="comment"> * RawGenBook Destructor - Cleans up instance of RawGenBook</font>
+00060 <font class="comment"> */</font>
+00061
+00062 RawGenBook::~RawGenBook() {
+00063
+00064 FileMgr::systemFileMgr.close(bdtfd);
+00065
+00066 <font class="keywordflow">if</font> (path)
+00067 <font class="keyword">delete</font> [] path;
+00068
+00069 <font class="keywordflow">if</font> (entryBuf)
+00070 <font class="keyword">delete</font> [] entryBuf;
+00071 }
+00072
+00073
+00074 <font class="comment">/******************************************************************************</font>
+00075 <font class="comment"> * RawGenBook::operator char * - Returns the correct verse when char * cast</font>
+00076 <font class="comment"> * is requested</font>
+00077 <font class="comment"> *</font>
+00078 <font class="comment"> * RET: string buffer with verse</font>
+00079 <font class="comment"> */</font>
+00080
+00081 <font class="keywordtype">char</font> *RawGenBook::getRawEntry() {
+00082
+00083 __u32 offset = 0;
+00084 __u32 size = 0;
+00085
+00086 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *key = 0;
+00087 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00088 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00089 <font class="preprocessor">#endif</font>
+00090 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a>, (this-&gt;key));
+00091 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00092 <font class="preprocessor"></font> }
+00093 <font class="keywordflow">catch</font> ( ... ) {}
+00094 <font class="preprocessor">#endif</font>
+00095 <font class="preprocessor"></font>
+00096 <font class="keywordflow">if</font> (!key) {
+00097 key = (<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *)CreateKey();
+00098 (*key) = *(this-&gt;key);
+00099 }
+00100
+00101 <font class="keywordflow">if</font> (entryBuf)
+00102 <font class="keyword">delete</font> [] entryBuf;
+00103
+00104 <font class="keywordtype">int</font> dsize;
+00105 key-&gt;<a class="code" href="class_tree_key_idx.html#a5">getUserData</a>(&amp;dsize);
+00106 <font class="keywordflow">if</font> (dsize &gt; 7) {
+00107 memcpy(&amp;offset, key-&gt;<a class="code" href="class_tree_key_idx.html#a5">getUserData</a>(), 4);
+00108 offset = swordtoarch32(offset);
+00109
+00110 memcpy(&amp;size, key-&gt;<a class="code" href="class_tree_key_idx.html#a5">getUserData</a>() + 4, 4);
+00111 size = swordtoarch32(size);
+00112
+00113 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00114
+00115 entryBuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ (size + 2) * FILTERPAD ];
+00116 *entryBuf = 0;
+00117 lseek(bdtfd-&gt;getFd(), offset, SEEK_SET);
+00118 read(bdtfd-&gt;getFd(), entryBuf, size);
+00119
+00120 rawFilter(entryBuf, size, key);
+00121
+00122 <font class="keywordflow">if</font> (!isUnicode())
+00123 RawStr::preptext(entryBuf);
+00124 }
+00125 <font class="keywordflow">else</font> {
+00126 entryBuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [2];
+00127 entryBuf[0] = 0;
+00128 entryBuf[1] = 0;
+00129 entrySize = 0;
+00130 }
+00131
+00132 <font class="keywordflow">if</font> (key != this-&gt;key) <font class="comment">// free our key if we created a VerseKey</font>
+00133 <font class="keyword">delete</font> key;
+00134
+00135 <font class="keywordflow">return</font> entryBuf;
+00136 }
+00137
+00138
+00139
+00140 <font class="preprocessor">#ifdef _MSC_VER</font>
+00141 <font class="preprocessor"></font><a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawGenBook::operator =(SW_POSITION p) {
+00142 <font class="preprocessor">#else</font>
+00143 <font class="preprocessor"></font>RawGenBook &amp;RawGenBook::operator =(SW_POSITION p) {
+00144 <font class="preprocessor">#endif</font>
+00145 <font class="preprocessor"></font> <a class="code" href="class_s_w_module.html#a40">SWModule::operator =</a>(p);
+00146 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00147 }
+00148
+00149 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawGenBook::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00150
+00151 __u32 offset = archtosword32(lseek(bdtfd-&gt;getFd(), 0, SEEK_END));
+00152 __u32 size = 0;
+00153 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *key = ((<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *)this-&gt;key);
+00154
+00155 <font class="keywordtype">char</font> userData[8];
+00156
+00157 <font class="keywordflow">if</font> (!len)
+00158 len = strlen(inbuf);
+00159
+00160 write(bdtfd-&gt;getFd(), inbuf, len);
+00161
+00162 size = archtosword32(len);
+00163 memcpy(userData, &amp;offset, 4);
+00164 memcpy(userData+4, &amp;size, 4);
+00165 key-&gt;<a class="code" href="class_tree_key_idx.html#a6">setUserData</a>(userData, 8);
+00166 key-&gt;<a class="code" href="class_tree_key_idx.html#a18">save</a>();
+00167
+00168 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00169 }
+00170
+00171 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawGenBook::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00172 <font class="keywordflow">return</font> setentry(inbuf, 0);
+00173 }
+00174
+00175
+00176 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawGenBook::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00177 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *srckey = 0;
+00178 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *key = ((<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *)this-&gt;key);
+00179 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00180 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00181 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00182 <font class="preprocessor">#endif</font>
+00183 <font class="preprocessor"></font> srckey = SWDYNAMIC_CAST(<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a>, inkey);
+00184 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00185 <font class="preprocessor"></font> }
+00186 <font class="keywordflow">catch</font> ( ... ) {}
+00187 <font class="preprocessor">#endif</font>
+00188 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00189 <font class="keywordflow">if</font> (!srckey) {
+00190 srckey = (<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *)CreateKey();
+00191 (*srckey) = *inkey;
+00192 }
+00193
+00194 key-&gt;<a class="code" href="class_tree_key_idx.html#a6">setUserData</a>(srckey-&gt;<a class="code" href="class_tree_key_idx.html#a5">getUserData</a>(), 8);
+00195 key-&gt;<a class="code" href="class_tree_key_idx.html#a18">save</a>();
+00196
+00197 <font class="keywordflow">if</font> (inkey != srckey) <font class="comment">// free our key if we created a VerseKey</font>
+00198 <font class="keyword">delete</font> srckey;
+00199
+00200 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00201 }
+00202
+00203
+00204 <font class="comment">/******************************************************************************</font>
+00205 <font class="comment"> * RawGenBook::deleteEntry - deletes this entry</font>
+00206 <font class="comment"> *</font>
+00207 <font class="comment"> * RET: *this</font>
+00208 <font class="comment"> */</font>
+00209
+00210 <font class="keywordtype">void</font> RawGenBook::deleteEntry() {
+00211 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *key = ((<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *)this-&gt;key);
+00212 key-&gt;<a class="code" href="class_tree_key_idx.html#a17">remove</a>();
+00213 }
+00214
+00215
+00216 <font class="keywordtype">char</font> RawGenBook::createModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath) {
+00217 <font class="keywordtype">char</font> *path = 0;
+00218 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00219 FileDesc *fd;
+00220 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> retval;
+00221
+00222 stdstr(&amp;path, ipath);
+00223
+00224 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00225 path[strlen(path)-1] = 0;
+00226
+00227 sprintf(buf, <font class="stringliteral">"%s.bdt"</font>, path);
+00228 unlink(buf);
+00229 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00230 fd-&gt;getFd();
+00231 FileMgr::systemFileMgr.close(fd);
+00232
+00233 retval = TreeKeyIdx::create(path);
+00234 <font class="keyword">delete</font> [] path;
+00235 <font class="keywordflow">return</font> retval;
+00236 }
+00237
+00238
+00239 <a class="code" href="class_s_w_key.html">SWKey</a> *RawGenBook::CreateKey() {
+00240 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *newKey = <font class="keyword">new</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a>(path);
+00241 <font class="keywordflow">return</font> newKey;
+00242 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawgenbook_8h-source.html b/doc/api-documentation/html/rawgenbook_8h-source.html
new file mode 100644
index 0000000..e050f22
--- /dev/null
+++ b/doc/api-documentation/html/rawgenbook_8h-source.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawgenbook.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawgenbook.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawtext.h - code for class 'RawText'- a module that reads raw text files:</font>
+00003 <font class="comment"> * ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: rawgenbook_8h-source.html,v 1.3 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef RAWGENBOOK_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define RAWGENBOOK_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swgenbook.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00031 <font class="keyword">class </font>SWDLLEXPORT RawGenBook:<font class="keyword">public</font> <a class="code" href="class_s_w_gen_book.html">SWGenBook</a> {
+00032 <font class="keywordtype">char</font> *entryBuf;
+00033 <font class="keywordtype">char</font> *path;
+00034 FileDesc *bdtfd;
+00035
+00036 <font class="keyword">public</font>:
+00037
+00038
+00039 RawGenBook (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00040 <font class="keyword">virtual</font> ~ RawGenBook ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a> ();
+00042 <font class="preprocessor">#ifdef _MSC_VER</font>
+00043 <font class="preprocessor"></font> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a40">operator = </a>(SW_POSITION);
+00044 <font class="preprocessor">#else</font>
+00045 <font class="preprocessor"></font> <font class="keyword">virtual</font> RawGenBook &amp; <a class="code" href="class_s_w_module.html#a40">operator = </a>(SW_POSITION);
+00046 <font class="preprocessor">#endif</font>
+00047 <font class="preprocessor"></font> <font class="comment">// write interface ----------------------------</font>
+00048 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((bdtfd-&gt;getFd() &gt; 0) &amp;&amp; ((bdtfd-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00049 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath);
+00050 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00051 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00052 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00053 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00054 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_gen_book.html#a2">CreateKey</a> ();
+00055 <font class="comment">// end write interface ------------------------</font>
+00056 };
+00057
+00058
+00059 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawld4_8cpp-source.html b/doc/api-documentation/html/rawld4_8cpp-source.html
new file mode 100644
index 0000000..45f9e9e
--- /dev/null
+++ b/doc/api-documentation/html/rawld4_8cpp-source.html
@@ -0,0 +1,218 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawld4.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawld4.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawld.cpp - code for class 'RawLD'- a module that reads raw lexicon and</font>
+00003 <font class="comment"> * dictionary files: *.dat *.idx</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;rawstr4.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;rawld4.h&gt;</font>
+00021
+00022
+00023 <font class="comment">/******************************************************************************</font>
+00024 <font class="comment"> * RawLD Constructor - Initializes data for instance of RawLD</font>
+00025 <font class="comment"> *</font>
+00026 <font class="comment"> * ENT: ipath - path and filename of files (no extension)</font>
+00027 <font class="comment"> * iname - Internal name for module</font>
+00028 <font class="comment"> * idesc - Name to display to user for module</font>
+00029 <font class="comment"> * idisp - Display object to use for displaying</font>
+00030 <font class="comment"> */</font>
+00031
+00032 RawLD4::RawLD4(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : RawStr4(ipath), <a class="code" href="class_s_w_l_d.html">SWLD</a>(iname, idesc, idisp, enc, dir, mark, ilang)
+00033 {
+00034 }
+00035
+00036
+00037 <font class="comment">/******************************************************************************</font>
+00038 <font class="comment"> * RawLD Destructor - Cleans up instance of RawLD</font>
+00039 <font class="comment"> */</font>
+00040
+00041 RawLD4::~RawLD4()
+00042 {
+00043 }
+00044
+00045
+00046 <font class="comment">/******************************************************************************</font>
+00047 <font class="comment"> * RawLD4::strongsPad - Pads a key if it is 100% digits to 5 places</font>
+00048 <font class="comment"> *</font>
+00049 <font class="comment"> * ENT: buf - buffer to check and pad</font>
+00050 <font class="comment"> */</font>
+00051
+00052 <font class="keywordtype">void</font> RawLD4::strongsPad(<font class="keywordtype">char</font> *buf)
+00053 {
+00054 <font class="keyword">const</font> <font class="keywordtype">char</font> *check;
+00055 <font class="keywordtype">long</font> size = 0;
+00056 <font class="keywordtype">int</font> len = strlen(buf);
+00057 <font class="keywordflow">if</font> ((len &lt; 5) &amp;&amp; (len &gt; 0)) {
+00058 <font class="keywordflow">for</font> (check = buf; *check; check++) {
+00059 <font class="keywordflow">if</font> (!isdigit(*check))
+00060 <font class="keywordflow">break</font>;
+00061 <font class="keywordflow">else</font> size++;
+00062 }
+00063
+00064 <font class="keywordflow">if</font> ((size == len) &amp;&amp; size)
+00065 sprintf(buf, <font class="stringliteral">"%.5d"</font>, atoi(buf));
+00066 }
+00067 }
+00068
+00069
+00070 <font class="comment">/******************************************************************************</font>
+00071 <font class="comment"> * RawLD4::getEntry - Looks up entry from data file. 'Snaps' to closest</font>
+00072 <font class="comment"> * entry and sets 'entrybuf'.</font>
+00073 <font class="comment"> *</font>
+00074 <font class="comment"> * ENT: away - number of entries offset from key (default = 0)</font>
+00075 <font class="comment"> *</font>
+00076 <font class="comment"> * RET: error status</font>
+00077 <font class="comment"> */</font>
+00078
+00079 <font class="keywordtype">char</font> RawLD4::getEntry(<font class="keywordtype">long</font> away)
+00080 {
+00081 <font class="keywordtype">long</font> start = 0;
+00082 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size = 0;
+00083 <font class="keywordtype">char</font> *idxbuf = 0;
+00084 <font class="keywordtype">char</font> retval = 0;
+00085
+00086 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(*key) + 6 ];
+00087 strcpy(buf, *key);
+00088
+00089 strongsPad(buf);
+00090
+00091 *entrybuf = 0;
+00092 <font class="keywordflow">if</font> (!(retval = findoffset(buf, &amp;start, &amp;size, away))) {
+00093 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00094 <font class="keywordflow">if</font> (entrybuf)
+00095 <font class="keyword">delete</font> [] entrybuf;
+00096 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ ++size * FILTERPAD ];
+00097 idxbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size * FILTERPAD ];
+00098
+00099 gettext(start, size, idxbuf, entrybuf);
+00100 <font class="keywordflow">if</font> (!key-&gt;Persist()) <font class="comment">// If we have our own key</font>
+00101 *key = idxbuf; <font class="comment">// reset it to entry index buffer</font>
+00102
+00103 stdstr(&amp;entkeytxt, idxbuf); <font class="comment">// set entry key text that module 'snapped' to.</font>
+00104 <font class="keyword">delete</font> [] idxbuf;
+00105 }
+00106 <font class="keywordflow">else</font> {
+00107 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ 5 ];
+00108 *entrybuf = 0;
+00109 }
+00110
+00111 <font class="keyword">delete</font> [] buf;
+00112 <font class="keywordflow">return</font> retval;
+00113 }
+00114
+00115
+00116 <font class="comment">/******************************************************************************</font>
+00117 <font class="comment"> * RawLD4::operator char * - Returns the correct entry when char * cast</font>
+00118 <font class="comment"> * is requested</font>
+00119 <font class="comment"> *</font>
+00120 <font class="comment"> * RET: string buffer with entry</font>
+00121 <font class="comment"> */</font>
+00122
+00123 <font class="keywordtype">char</font> *RawLD4::getRawEntry() {
+00124 <font class="keywordflow">if</font> (!getEntry() &amp;&amp; !isUnicode()) {
+00125 preptext(entrybuf);
+00126 }
+00127
+00128 <font class="keywordflow">return</font> entrybuf;
+00129 }
+00130
+00131
+00132 <font class="comment">/******************************************************************************</font>
+00133 <font class="comment"> * RawLD4::operator += - Increments module key a number of entries</font>
+00134 <font class="comment"> *</font>
+00135 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00136 <font class="comment"> *</font>
+00137 <font class="comment"> * RET: *this</font>
+00138 <font class="comment"> */</font>
+00139
+00140 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD4::operator +=(<font class="keywordtype">int</font> increment)
+00141 {
+00142 <font class="keywordtype">char</font> tmperror;
+00143
+00144 <font class="keywordflow">if</font> (key-&gt;Traversable()) {
+00145 *key += increment;
+00146 error = key-&gt;Error();
+00147 increment = 0;
+00148 }
+00149
+00150 tmperror = (getEntry(increment)) ? KEYERR_OUTOFBOUNDS : 0;
+00151 error = (error)?error:tmperror;
+00152 *key = entkeytxt;
+00153 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00154 }
+00155
+00156
+00157 <font class="comment">/******************************************************************************</font>
+00158 <font class="comment"> * RawLD4::operator =(SW_POSITION) - Positions this key if applicable</font>
+00159 <font class="comment"> */</font>
+00160
+00161 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD4::operator =(SW_POSITION p)
+00162 {
+00163 <font class="keywordflow">if</font> (!key-&gt;Traversable()) {
+00164 <font class="keywordflow">switch</font> (p) {
+00165 <font class="keywordflow">case</font> POS_TOP:
+00166 *key = <font class="stringliteral">""</font>;
+00167 <font class="keywordflow">break</font>;
+00168 <font class="keywordflow">case</font> POS_BOTTOM:
+00169 *key = <font class="stringliteral">"zzzzzzzzz"</font>;
+00170 <font class="keywordflow">break</font>;
+00171 }
+00172 }
+00173 <font class="keywordflow">else</font> *key = p;
+00174 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00175 }
+00176
+00177
+00178 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD4::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00179 settext(*key, inbuf, len);
+00180
+00181 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00182 }
+00183
+00184 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD4::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00185 <font class="keywordflow">return</font> setentry(inbuf, 0);
+00186 }
+00187
+00188
+00189 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD4::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00190 linkentry(*key, *inkey);
+00191
+00192 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00193 }
+00194
+00195
+00196 <font class="comment">/******************************************************************************</font>
+00197 <font class="comment"> * RawFiles::deleteEntry - deletes this entry</font>
+00198 <font class="comment"> *</font>
+00199 <font class="comment"> * RET: *this</font>
+00200 <font class="comment"> */</font>
+00201
+00202 <font class="keywordtype">void</font> RawLD4::deleteEntry() {
+00203 settext(*key, <font class="stringliteral">""</font>);
+00204 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawld4_8h-source.html b/doc/api-documentation/html/rawld4_8h-source.html
new file mode 100644
index 0000000..f06f0da
--- /dev/null
+++ b/doc/api-documentation/html/rawld4_8h-source.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawld4.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawld4.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawld.cpp - code for class 'RawLD'- a module that reads raw lexicon and</font>
+00003 <font class="comment"> * dictionary files: *.dat *.idx</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: rawld4_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef RAWLD4_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define RAWLD4_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;rawstr4.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swld.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00031 <font class="keyword">class </font>SWDLLEXPORT RawLD4:<font class="keyword">public</font> RawStr4, <font class="keyword">public</font> <a class="code" href="class_s_w_l_d.html">SWLD</a>
+00032 {
+00033 <font class="keywordtype">void</font> strongsPad (<font class="keywordtype">char</font> *buf);
+00034 <font class="keywordtype">char</font> getEntry (<font class="keywordtype">long</font> away = 0);
+00035
+00036 <font class="keyword">public</font>:
+00037
+00038
+00039 RawLD4(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc =
+00040 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00041 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00042 <font class="keyword">virtual</font> ~RawLD4();
+00043 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a>();
+00044
+00045 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a40">operator =</a>(SW_POSITION pos);
+00046 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a37">operator +=</a>(<font class="keywordtype">int</font> increment);
+00047 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a36">operator -=</a>(<font class="keywordtype">int</font> decrement) {
+00048 <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_s_w_module.html#a37">operator +=</a>(-decrement);
+00049 }
+00050 <font class="comment">// write interface ----------------------------</font>
+00051 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfd-&gt;getFd() &gt; 0) &amp;&amp; ((idxfd-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00052 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *path) {
+00053 <font class="keywordflow">return</font> RawStr4::createModule (path);
+00054 }
+00055
+00056 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00057 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00058 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00059 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00060 <font class="comment">// end write interface ------------------------</font>
+00061 };
+00062
+00063
+00064 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawld_8cpp-source.html b/doc/api-documentation/html/rawld_8cpp-source.html
new file mode 100644
index 0000000..9f0e93c
--- /dev/null
+++ b/doc/api-documentation/html/rawld_8cpp-source.html
@@ -0,0 +1,218 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawld.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawld.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawld.cpp - code for class 'RawLD'- a module that reads raw lexicon and</font>
+00003 <font class="comment"> * dictionary files: *.dat *.idx</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;rawstr.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;rawld.h&gt;</font>
+00021
+00022
+00023 <font class="comment">/******************************************************************************</font>
+00024 <font class="comment"> * RawLD Constructor - Initializes data for instance of RawLD</font>
+00025 <font class="comment"> *</font>
+00026 <font class="comment"> * ENT: ipath - path and filename of files (no extension)</font>
+00027 <font class="comment"> * iname - Internal name for module</font>
+00028 <font class="comment"> * idesc - Name to display to user for module</font>
+00029 <font class="comment"> * idisp - Display object to use for displaying</font>
+00030 <font class="comment"> */</font>
+00031
+00032 RawLD::RawLD(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : RawStr(ipath), <a class="code" href="class_s_w_l_d.html">SWLD</a>(iname, idesc, idisp, enc, dir, mark, ilang)
+00033 {
+00034 }
+00035
+00036
+00037 <font class="comment">/******************************************************************************</font>
+00038 <font class="comment"> * RawLD Destructor - Cleans up instance of RawLD</font>
+00039 <font class="comment"> */</font>
+00040
+00041 RawLD::~RawLD()
+00042 {
+00043 }
+00044
+00045
+00046 <font class="comment">/******************************************************************************</font>
+00047 <font class="comment"> * RawLD::strongsPad - Pads a key if it is 100% digits to 5 places</font>
+00048 <font class="comment"> *</font>
+00049 <font class="comment"> * ENT: buf - buffer to check and pad</font>
+00050 <font class="comment"> */</font>
+00051
+00052 <font class="keywordtype">void</font> RawLD::strongsPad(<font class="keywordtype">char</font> *buf)
+00053 {
+00054 <font class="keyword">const</font> <font class="keywordtype">char</font> *check;
+00055 <font class="keywordtype">int</font> size = 0;
+00056 <font class="keywordtype">int</font> len = strlen(buf);
+00057 <font class="keywordflow">if</font> ((len &lt; 5) &amp;&amp; (len &gt; 0)) {
+00058 <font class="keywordflow">for</font> (check = buf; *check; check++) {
+00059 <font class="keywordflow">if</font> (!isdigit(*check))
+00060 <font class="keywordflow">break</font>;
+00061 <font class="keywordflow">else</font> size++;
+00062 }
+00063
+00064 <font class="keywordflow">if</font> ((size == len) &amp;&amp; size)
+00065 sprintf(buf, <font class="stringliteral">"%.5d"</font>, atoi(buf));
+00066 }
+00067 }
+00068
+00069
+00070 <font class="comment">/******************************************************************************</font>
+00071 <font class="comment"> * RawLD::getEntry - Looks up entry from data file. 'Snaps' to closest</font>
+00072 <font class="comment"> * entry and sets 'entrybuf'.</font>
+00073 <font class="comment"> *</font>
+00074 <font class="comment"> * ENT: away - number of entries offset from key (default = 0)</font>
+00075 <font class="comment"> *</font>
+00076 <font class="comment"> * RET: error status</font>
+00077 <font class="comment"> */</font>
+00078
+00079 <font class="keywordtype">char</font> RawLD::getEntry(<font class="keywordtype">long</font> away)
+00080 {
+00081 <font class="keywordtype">long</font> start = 0;
+00082 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = 0;
+00083 <font class="keywordtype">char</font> *idxbuf = 0;
+00084 <font class="keywordtype">char</font> retval = 0;
+00085
+00086 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(*key) + 6 ];
+00087 strcpy(buf, *key);
+00088
+00089 strongsPad(buf);
+00090
+00091 *entrybuf = 0;
+00092 <font class="keywordflow">if</font> (!(retval = findoffset(buf, &amp;start, &amp;size, away))) {
+00093 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00094 <font class="keywordflow">if</font> (entrybuf)
+00095 <font class="keyword">delete</font> [] entrybuf;
+00096 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ ++size * FILTERPAD ];
+00097 idxbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size * FILTERPAD ];
+00098
+00099 gettext(start, size + 1, idxbuf, entrybuf);
+00100 <font class="keywordflow">if</font> (!key-&gt;Persist()) <font class="comment">// If we have our own key</font>
+00101 *key = idxbuf; <font class="comment">// reset it to entry index buffer</font>
+00102
+00103 stdstr(&amp;entkeytxt, idxbuf); <font class="comment">// set entry key text that module 'snapped' to.</font>
+00104 <font class="keyword">delete</font> [] idxbuf;
+00105 }
+00106 <font class="keywordflow">else</font> {
+00107 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ 5 ];
+00108 *entrybuf = 0;
+00109 }
+00110
+00111 <font class="keyword">delete</font> [] buf;
+00112 <font class="keywordflow">return</font> retval;
+00113 }
+00114
+00115
+00116 <font class="comment">/******************************************************************************</font>
+00117 <font class="comment"> * RawLD::operator char * - Returns the correct entry when char * cast</font>
+00118 <font class="comment"> * is requested</font>
+00119 <font class="comment"> *</font>
+00120 <font class="comment"> * RET: string buffer with entry</font>
+00121 <font class="comment"> */</font>
+00122
+00123 <font class="keywordtype">char</font> *RawLD::getRawEntry() {
+00124 <font class="keywordflow">if</font> (!getEntry() &amp;&amp; !isUnicode()) {
+00125 preptext(entrybuf);
+00126 }
+00127
+00128 <font class="keywordflow">return</font> entrybuf;
+00129 }
+00130
+00131
+00132 <font class="comment">/******************************************************************************</font>
+00133 <font class="comment"> * RawLD::operator += - Increments module key a number of entries</font>
+00134 <font class="comment"> *</font>
+00135 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00136 <font class="comment"> *</font>
+00137 <font class="comment"> * RET: *this</font>
+00138 <font class="comment"> */</font>
+00139
+00140 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD::operator +=(<font class="keywordtype">int</font> increment)
+00141 {
+00142 <font class="keywordtype">char</font> tmperror;
+00143
+00144 <font class="keywordflow">if</font> (key-&gt;Traversable()) {
+00145 *key += increment;
+00146 error = key-&gt;Error();
+00147 increment = 0;
+00148 }
+00149
+00150 tmperror = (getEntry(increment)) ? KEYERR_OUTOFBOUNDS : 0;
+00151 error = (error)?error:tmperror;
+00152 *key = entkeytxt;
+00153 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00154 }
+00155
+00156
+00157 <font class="comment">/******************************************************************************</font>
+00158 <font class="comment"> * RawLD::operator =(SW_POSITION) - Positions this key if applicable</font>
+00159 <font class="comment"> */</font>
+00160
+00161 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD::operator =(SW_POSITION p)
+00162 {
+00163 <font class="keywordflow">if</font> (!key-&gt;Traversable()) {
+00164 <font class="keywordflow">switch</font> (p) {
+00165 <font class="keywordflow">case</font> POS_TOP:
+00166 *key = <font class="stringliteral">""</font>;
+00167 <font class="keywordflow">break</font>;
+00168 <font class="keywordflow">case</font> POS_BOTTOM:
+00169 *key = <font class="stringliteral">"zzzzzzzzz"</font>;
+00170 <font class="keywordflow">break</font>;
+00171 }
+00172 }
+00173 <font class="keywordflow">else</font> *key = p;
+00174 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00175 }
+00176
+00177
+00178 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00179 settext(*key, inbuf, len);
+00180
+00181 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00182 }
+00183
+00184 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00185 <font class="keywordflow">return</font> setentry(inbuf, 0);
+00186 }
+00187
+00188
+00189 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawLD::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00190 linkentry(*key, *inkey);
+00191
+00192 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00193 }
+00194
+00195
+00196 <font class="comment">/******************************************************************************</font>
+00197 <font class="comment"> * RawFiles::deleteEntry - deletes this entry</font>
+00198 <font class="comment"> *</font>
+00199 <font class="comment"> * RET: *this</font>
+00200 <font class="comment"> */</font>
+00201
+00202 <font class="keywordtype">void</font> RawLD::deleteEntry() {
+00203 settext(*key, <font class="stringliteral">""</font>);
+00204 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawld_8h-source.html b/doc/api-documentation/html/rawld_8h-source.html
new file mode 100644
index 0000000..857fd37
--- /dev/null
+++ b/doc/api-documentation/html/rawld_8h-source.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawld.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawld.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawld.cpp - code for class 'RawLD'- a module that reads raw lexicon and</font>
+00003 <font class="comment"> * dictionary files: *.dat *.idx</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: rawld_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef RAWLD_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define RAWLD_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;rawstr.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swld.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00031 <font class="keyword">class </font>SWDLLEXPORT RawLD:<font class="keyword">public</font> RawStr, <font class="keyword">public</font> <a class="code" href="class_s_w_l_d.html">SWLD</a>
+00032 {
+00033 <font class="keywordtype">void</font> strongsPad (<font class="keywordtype">char</font> *buf);
+00034 <font class="keywordtype">char</font> getEntry (<font class="keywordtype">long</font> away = 0);
+00035
+00036 <font class="keyword">public</font>:
+00037
+00038
+00039 RawLD (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc =
+00040 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00041 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00042 <font class="keyword">virtual</font> ~ RawLD ();
+00043 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a> ();
+00044
+00045 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a40">operator = </a>(SW_POSITION pos);
+00046 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a37">operator += </a>(<font class="keywordtype">int</font> increment);
+00047 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a36">operator -= </a>(<font class="keywordtype">int</font> decrement)
+00048 {
+00049 <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_s_w_module.html#a37">operator += </a>(-decrement);
+00050 }
+00051 <font class="comment">// write interface ----------------------------</font>
+00052 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfd-&gt;getFd() &gt; 0) &amp;&amp; ((idxfd-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00053 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *path)
+00054 {
+00055 <font class="keywordflow">return</font> RawStr::createModule (path);
+00056 }
+00057
+00058 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00059 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00060 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00061 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00062 <font class="comment">// end write interface ------------------------</font>
+00063 };
+00064
+00065
+00066 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawstr4_8cpp-source.html b/doc/api-documentation/html/rawstr4_8cpp-source.html
new file mode 100644
index 0000000..2626f05
--- /dev/null
+++ b/doc/api-documentation/html/rawstr4_8cpp-source.html
@@ -0,0 +1,576 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawstr4.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawstr4.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawstr.cpp - code for class 'RawStr'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class StrKey</font>
+00006 <font class="comment"> */</font>
+00007
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifndef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00014 <font class="preprocessor">#else</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00016 <font class="preprocessor">#endif</font>
+00017 <font class="preprocessor"></font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;rawstr4.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;sysdata.h&gt;</font>
+00023
+00024 <font class="comment">/******************************************************************************</font>
+00025 <font class="comment"> * RawStr Statics</font>
+00026 <font class="comment"> */</font>
+00027
+00028 <font class="keywordtype">int</font> RawStr4::instance = 0;
+00029
+00030
+00031 <font class="comment">/******************************************************************************</font>
+00032 <font class="comment"> * RawStr Constructor - Initializes data for instance of RawStr</font>
+00033 <font class="comment"> *</font>
+00034 <font class="comment"> * ENT: ipath - path of the directory where data and index files are located.</font>
+00035 <font class="comment"> * be sure to include the trailing separator (e.g. '/' or '\')</font>
+00036 <font class="comment"> * (e.g. 'modules/texts/rawtext/webster/')</font>
+00037 <font class="comment"> */</font>
+00038
+00039 RawStr4::RawStr4(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode)
+00040 {
+00041 <font class="keywordtype">char</font> buf[127];
+00042
+00043 nl = <font class="charliteral">'\n'</font>;
+00044 lastoff = -1;
+00045 path = 0;
+00046 stdstr(&amp;path, ipath);
+00047
+00048 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00049 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00050 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00051 <font class="preprocessor"></font>
+00052 <font class="keywordflow">if</font> (fileMode == -1) { <font class="comment">// try read/write if possible</font>
+00053 fileMode = O_RDWR;
+00054 }
+00055
+00056 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00057 idxfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00058
+00059 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00060 datfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00061
+00062 <font class="keywordflow">if</font> (datfd &lt; 0) {
+00063 sprintf(buf, <font class="stringliteral">"Error: %d"</font>, errno);
+00064 perror(buf);
+00065 }
+00066
+00067 instance++;
+00068 }
+00069
+00070
+00071 <font class="comment">/******************************************************************************</font>
+00072 <font class="comment"> * RawStr Destructor - Cleans up instance of RawStr</font>
+00073 <font class="comment"> */</font>
+00074
+00075 RawStr4::~RawStr4()
+00076 {
+00077 <font class="keywordflow">if</font> (path)
+00078 <font class="keyword">delete</font> [] path;
+00079
+00080 --instance;
+00081
+00082 FileMgr::systemFileMgr.close(idxfd);
+00083 FileMgr::systemFileMgr.close(datfd);
+00084 }
+00085
+00086
+00087 <font class="comment">/******************************************************************************</font>
+00088 <font class="comment"> * RawStr4::getidxbufdat - Gets the index string at the given idx offset</font>
+00089 <font class="comment"> * NOTE: buf is allocated and must be freed by</font>
+00090 <font class="comment"> * calling function</font>
+00091 <font class="comment"> *</font>
+00092 <font class="comment"> * ENT: ioffset - offset in dat file to lookup</font>
+00093 <font class="comment"> * buf - address of pointer to allocate for storage of string</font>
+00094 <font class="comment"> */</font>
+00095
+00096 <font class="keywordtype">void</font> RawStr4::getidxbufdat(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf)
+00097 {
+00098 <font class="keywordtype">int</font> size;
+00099 <font class="keywordtype">char</font> ch;
+00100 <font class="keywordflow">if</font> (datfd &gt; 0) {
+00101 lseek(datfd-&gt;getFd(), ioffset, SEEK_SET);
+00102 <font class="keywordflow">for</font> (size = 0; read(datfd-&gt;getFd(), &amp;ch, 1) == 1; size++) {
+00103 <font class="keywordflow">if</font> ((ch == <font class="charliteral">'\\'</font>) || (ch == 10) || (ch == 13))
+00104 <font class="keywordflow">break</font>;
+00105 }
+00106 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, size + 1) : (char *)malloc(size + 1);
+00107 <font class="keywordflow">if</font> (size) {
+00108 lseek(datfd-&gt;getFd(), ioffset, SEEK_SET);
+00109 read(datfd-&gt;getFd(), *buf, size);
+00110 }
+00111 (*buf)[size] = 0;
+00112 <font class="keywordflow">for</font> (size--; size &gt; 0; size--)
+00113 (*buf)[size] = SW_toupper((*buf)[size]);
+00114 }
+00115 <font class="keywordflow">else</font> {
+00116 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, 1) : (char *)malloc(1);
+00117 **buf = 0;
+00118 }
+00119 }
+00120
+00121
+00122 <font class="comment">/******************************************************************************</font>
+00123 <font class="comment"> * RawStr4::getidxbuf - Gets the index string at the given idx offset</font>
+00124 <font class="comment"> * NOTE: buf is allocated and must be freed by</font>
+00125 <font class="comment"> * calling function</font>
+00126 <font class="comment"> *</font>
+00127 <font class="comment"> * ENT: ioffset - offset in idx file to lookup</font>
+00128 <font class="comment"> * buf - address of pointer to allocate for storage of string</font>
+00129 <font class="comment"> */</font>
+00130
+00131 <font class="keywordtype">void</font> RawStr4::getidxbuf(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf)
+00132 {
+00133 <font class="keywordtype">char</font> *trybuf, *targetbuf;
+00134 <font class="keywordtype">long</font> offset;
+00135
+00136 <font class="keywordflow">if</font> (idxfd &gt; 0) {
+00137 lseek(idxfd-&gt;getFd(), ioffset, SEEK_SET);
+00138 read(idxfd-&gt;getFd(), &amp;offset, 4);
+00139
+00140 offset = swordtoarch32(offset);
+00141
+00142 getidxbufdat(offset, buf);
+00143 <font class="keywordflow">for</font> (trybuf = targetbuf = *buf; *trybuf; trybuf++, targetbuf++) {
+00144 <font class="comment">/*</font>
+00145 <font class="comment"> if (*trybuf == '-') { // ignore '-' because alphabetized silly in file</font>
+00146 <font class="comment"> targetbuf--;</font>
+00147 <font class="comment"> continue;</font>
+00148 <font class="comment"> }</font>
+00149 <font class="comment">*/</font>
+00150 *targetbuf = SW_toupper(*trybuf);
+00151 }
+00152 *targetbuf = 0;
+00153 trybuf = 0;
+00154 }
+00155 }
+00156
+00157
+00158 <font class="comment">/******************************************************************************</font>
+00159 <font class="comment"> * RawStr4::findoffset - Finds the offset of the key string from the indexes</font>
+00160 <font class="comment"> *</font>
+00161 <font class="comment"> * ENT: key - key string to lookup</font>
+00162 <font class="comment"> * start - address to store the starting offset</font>
+00163 <font class="comment"> * size - address to store the size of the entry</font>
+00164 <font class="comment"> * away - number of entries before of after to jump</font>
+00165 <font class="comment"> * (default = 0)</font>
+00166 <font class="comment"> *</font>
+00167 <font class="comment"> * RET: error status</font>
+00168 <font class="comment"> */</font>
+00169
+00170 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> RawStr4::findoffset(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keywordtype">long</font> *start, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *size, <font class="keywordtype">long</font> away, <font class="keywordtype">long</font> *idxoff)
+00171 {
+00172 <font class="keywordtype">char</font> *trybuf, *targetbuf, *key, quitflag = 0;
+00173 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> retval = 0;
+00174 <font class="keywordtype">long</font> headoff, tailoff, tryoff = 0, maxoff = 0;
+00175
+00176 <font class="keywordflow">if</font> (idxfd-&gt;getFd() &gt;=0) {
+00177 <font class="keywordflow">if</font> (*ikey) {
+00178 headoff = 0;
+00179 tailoff = maxoff = lseek(idxfd-&gt;getFd(), 0, SEEK_END) - 8;
+00180
+00181 key = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(ikey) + 1 ];
+00182 strcpy(key, ikey);
+00183
+00184 <font class="keywordflow">for</font> (trybuf = targetbuf = key; *trybuf; trybuf++, targetbuf++) {
+00185 <font class="comment">/*</font>
+00186 <font class="comment"> if (*trybuf == '-') { // ignore '-' because alphabetized silly in file</font>
+00187 <font class="comment"> targetbuf--;</font>
+00188 <font class="comment"> continue;</font>
+00189 <font class="comment"> }</font>
+00190 <font class="comment"> */</font>
+00191 *targetbuf = SW_toupper(*trybuf);
+00192 }
+00193 *targetbuf = 0;
+00194 trybuf = 0;
+00195
+00196 <font class="keywordflow">while</font> (headoff &lt; tailoff) {
+00197 tryoff = (lastoff == -1) ? headoff + ((((tailoff / 8) - (headoff / 8))) / 2) * 8 : lastoff;
+00198 lastoff = -1;
+00199 getidxbuf(tryoff, &amp;trybuf);
+00200
+00201 <font class="keywordflow">if</font> (!*trybuf) { <font class="comment">// In case of extra entry at end of idx</font>
+00202 tryoff += (tryoff &gt; (maxoff / 2))?-8:8;
+00203 retval = -1;
+00204 <font class="keywordflow">break</font>;
+00205 }
+00206
+00207 <font class="keywordflow">if</font> (!strcmp(key, trybuf))
+00208 <font class="keywordflow">break</font>;
+00209
+00210 <font class="keywordtype">int</font> diff = strcmp(key, trybuf);
+00211 <font class="keywordflow">if</font> (diff &lt; 0)
+00212 tailoff = (tryoff == headoff) ? headoff : tryoff;
+00213 <font class="keywordflow">else</font> headoff = tryoff;
+00214 <font class="keywordflow">if</font> (tailoff == headoff + 8) {
+00215 <font class="keywordflow">if</font> (quitflag++)
+00216 headoff = tailoff;
+00217 }
+00218 }
+00219 <font class="keywordflow">if</font> (headoff &gt;= tailoff)
+00220 tryoff = headoff;
+00221 <font class="keywordflow">if</font> (trybuf)
+00222 free(trybuf);
+00223 <font class="keyword">delete</font> [] key;
+00224 }
+00225 <font class="keywordflow">else</font> tryoff = 0;
+00226
+00227 lseek(idxfd-&gt;getFd(), tryoff, SEEK_SET);
+00228
+00229 *start = *size = 0;
+00230 read(idxfd-&gt;getFd(), start, 4);
+00231 read(idxfd-&gt;getFd(), size, 4);
+00232 <font class="keywordflow">if</font> (idxoff)
+00233 *idxoff = tryoff;
+00234
+00235 *start = swordtoarch32(*start);
+00236 *size = swordtoarch32(*size);
+00237
+00238 <font class="keywordflow">while</font> (away) {
+00239 <font class="keywordtype">long</font> laststart = *start;
+00240 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> lastsize = *size;
+00241 <font class="keywordtype">long</font> lasttry = tryoff;
+00242 tryoff += (away &gt; 0) ? 8 : -8;
+00243
+00244 <font class="keywordtype">bool</font> bad = <font class="keyword">false</font>;
+00245 <font class="keywordflow">if</font> (((tryoff + (away*8)) &lt; -8) || (tryoff + (away*8) &gt; (maxoff+8)))
+00246 bad = <font class="keyword">true</font>;
+00247 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (lseek(idxfd-&gt;getFd(), tryoff, SEEK_SET) &lt; 0)
+00248 bad = <font class="keyword">true</font>;
+00249 <font class="keywordflow">if</font> (bad) {
+00250 retval = -1;
+00251 *start = laststart;
+00252 *size = lastsize;
+00253 tryoff = lasttry;
+00254 <font class="keywordflow">if</font> (idxoff)
+00255 *idxoff = tryoff;
+00256 <font class="keywordflow">break</font>;
+00257 }
+00258 read(idxfd-&gt;getFd(), start, 4);
+00259 read(idxfd-&gt;getFd(), size, 4);
+00260 <font class="keywordflow">if</font> (idxoff)
+00261 *idxoff = tryoff;
+00262
+00263 *start = swordtoarch32(*start);
+00264 *size = swordtoarch32(*size);
+00265
+00266 <font class="keywordflow">if</font> (((laststart != *start) || (lastsize != *size)) &amp;&amp; (*start &gt;= 0) &amp;&amp; (*size))
+00267 away += (away &lt; 0) ? 1 : -1;
+00268 }
+00269
+00270 lastoff = tryoff;
+00271 }
+00272 <font class="keywordflow">else</font> {
+00273 *start = 0;
+00274 *size = 0;
+00275 <font class="keywordflow">if</font> (idxoff)
+00276 *idxoff = 0;
+00277 retval = -1;
+00278 }
+00279 <font class="keywordflow">return</font> retval;
+00280 }
+00281
+00282
+00283 <font class="comment">/******************************************************************************</font>
+00284 <font class="comment"> * RawStr4::preptext - Prepares the text before returning it to external</font>
+00285 <font class="comment"> * objects</font>
+00286 <font class="comment"> *</font>
+00287 <font class="comment"> * ENT: buf - buffer where text is stored and where to store the prep'd</font>
+00288 <font class="comment"> * text.</font>
+00289 <font class="comment"> */</font>
+00290
+00291 <font class="keywordtype">void</font> RawStr4::preptext(<font class="keywordtype">char</font> *buf)
+00292 {
+00293 <font class="keywordtype">char</font> *to, *from, space = 0, cr = 0, realdata = 0, nlcnt = 0;
+00294
+00295 <font class="keywordflow">for</font> (to = from = buf; *from; from++) {
+00296 <font class="keywordflow">switch</font> (*from) {
+00297 <font class="keywordflow">case</font> 10:
+00298 <font class="keywordflow">if</font> (!realdata)
+00299 <font class="keywordflow">continue</font>;
+00300 space = (cr) ? 0 : 1;
+00301 cr = 0;
+00302 nlcnt++;
+00303 <font class="keywordflow">if</font> (nlcnt &gt; 1) {
+00304 <font class="comment">// *to++ = nl;</font>
+00305 *to++ = nl;
+00306 <font class="comment">// nlcnt = 0;</font>
+00307 }
+00308 <font class="keywordflow">continue</font>;
+00309 <font class="keywordflow">case</font> 13:
+00310 <font class="keywordflow">if</font> (!realdata)
+00311 <font class="keywordflow">continue</font>;
+00312 *to++ = nl;
+00313 space = 0;
+00314 cr = 1;
+00315 <font class="keywordflow">continue</font>;
+00316 }
+00317 realdata = 1;
+00318 nlcnt = 0;
+00319 <font class="keywordflow">if</font> (space) {
+00320 space = 0;
+00321 <font class="keywordflow">if</font> (*from != <font class="charliteral">' '</font>) {
+00322 *to++ = <font class="charliteral">' '</font>;
+00323 from--;
+00324 <font class="keywordflow">continue</font>;
+00325 }
+00326 }
+00327 *to++ = *from;
+00328 }
+00329 *to = 0;
+00330
+00331 <font class="keywordflow">while</font> (to &gt; (buf+1)) { <font class="comment">// remove trailing excess</font>
+00332 to--;
+00333 <font class="keywordflow">if</font> ((*to == 10) || (*to == <font class="charliteral">' '</font>))
+00334 *to = 0;
+00335 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00336 }
+00337 }
+00338
+00339
+00340 <font class="comment">/******************************************************************************</font>
+00341 <font class="comment"> * RawStr4::gettext - gets text at a given offset</font>
+00342 <font class="comment"> *</font>
+00343 <font class="comment"> * ENT:</font>
+00344 <font class="comment"> * start - starting offset where the text is located in the file</font>
+00345 <font class="comment"> * size - size of text entry</font>
+00346 <font class="comment"> * buf - buffer to store text</font>
+00347 <font class="comment"> *</font>
+00348 <font class="comment"> */</font>
+00349
+00350 <font class="keywordtype">void</font> RawStr4::gettext(<font class="keywordtype">long</font> istart, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> isize, <font class="keywordtype">char</font> *idxbuf, <font class="keywordtype">char</font> *buf)
+00351 {
+00352 <font class="keywordtype">char</font> *ch;
+00353 <font class="keywordtype">char</font> *idxbuflocal = 0;
+00354 getidxbufdat(istart, &amp;idxbuflocal);
+00355 <font class="keywordtype">long</font> start = istart;
+00356 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size = isize;
+00357
+00358 <font class="keywordflow">do</font> {
+00359 memset(buf, 0, size);
+00360 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00361 read(datfd-&gt;getFd(), buf, (int)(size - 1));
+00362
+00363 <font class="keywordflow">for</font> (ch = buf; *ch; ch++) { <font class="comment">// skip over index string</font>
+00364 <font class="keywordflow">if</font> (*ch == 10) {
+00365 ch++;
+00366 <font class="keywordflow">break</font>;
+00367 }
+00368 }
+00369 memmove(buf, ch, size - (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>)(ch-buf));
+00370
+00371 <font class="comment">// resolve link</font>
+00372 <font class="keywordflow">if</font> (!strncmp(buf, <font class="stringliteral">"@LINK"</font>, 5)) {
+00373 <font class="keywordflow">for</font> (ch = buf; *ch; ch++) { <font class="comment">// null before nl</font>
+00374 <font class="keywordflow">if</font> (*ch == 10) {
+00375 *ch = 0;
+00376 <font class="keywordflow">break</font>;
+00377 }
+00378 }
+00379 findoffset(buf + 8, &amp;start, &amp;size);
+00380 }
+00381 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00382 }
+00383 <font class="keywordflow">while</font> (true); <font class="comment">// while we're resolving links</font>
+00384
+00385 <font class="keywordflow">if</font> (idxbuflocal) {
+00386 <font class="keywordtype">int</font> localsize = strlen(idxbuflocal);
+00387 localsize = (localsize &lt; (size - 1)) ? localsize : (size - 1);
+00388 strncpy(idxbuf, idxbuflocal, localsize);
+00389 idxbuf[localsize] = 0;
+00390 free(idxbuflocal);
+00391 }
+00392 }
+00393
+00394
+00395 <font class="comment">/******************************************************************************</font>
+00396 <font class="comment"> * RawLD::settext - Sets text for current offset</font>
+00397 <font class="comment"> *</font>
+00398 <font class="comment"> * ENT: key - key for this entry</font>
+00399 <font class="comment"> * buf - buffer to store</font>
+00400 <font class="comment"> * len - length of buffer (0 - null terminated)</font>
+00401 <font class="comment"> */</font>
+00402
+00403 <font class="keywordtype">void</font> RawStr4::settext(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len)
+00404 {
+00405
+00406 <font class="keywordtype">long</font> start, outstart;
+00407 <font class="keywordtype">long</font> idxoff;
+00408 <font class="keywordtype">long</font> endoff;
+00409 <font class="keywordtype">long</font> shiftSize;
+00410 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size;
+00411 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> outsize;
+00412 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> nl[] = {13, 10};
+00413 <font class="keywordtype">char</font> *tmpbuf = 0;
+00414 <font class="keywordtype">char</font> *key = 0;
+00415 <font class="keywordtype">char</font> *dbKey = 0;
+00416 <font class="keywordtype">char</font> *idxBytes = 0;
+00417 <font class="keywordtype">char</font> *outbuf = 0;
+00418 <font class="keywordtype">char</font> *ch = 0;
+00419
+00420 findoffset(ikey, &amp;start, &amp;size, 0, &amp;idxoff);
+00421 stdstr(&amp;key, ikey);
+00422 <font class="keywordflow">for</font> (ch = key; *ch; ch++)
+00423 *ch = SW_toupper(*ch);
+00424 ch = 0;
+00425
+00426 getidxbufdat(start, &amp;dbKey);
+00427
+00428 <font class="keywordflow">if</font> (strcmp(key, dbKey) &lt; 0) {
+00429 }
+00430 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (strcmp(key, dbKey) &gt; 0) {
+00431 idxoff += 8;
+00432 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((!strcmp(key, dbKey)) &amp;&amp; (len || strlen(buf) <font class="comment">/*we're not deleting*/</font>)) { <font class="comment">// got absolute entry</font>
+00433 <font class="keywordflow">do</font> {
+00434 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size + 2 ];
+00435 memset(tmpbuf, 0, size + 2);
+00436 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00437 read(datfd-&gt;getFd(), tmpbuf, (int)(size - 1));
+00438
+00439 <font class="keywordflow">for</font> (ch = tmpbuf; *ch; ch++) { <font class="comment">// skip over index string</font>
+00440 <font class="keywordflow">if</font> (*ch == 10) {
+00441 ch++;
+00442 <font class="keywordflow">break</font>;
+00443 }
+00444 }
+00445 memmove(tmpbuf, ch, size - (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>)(ch-tmpbuf));
+00446
+00447 <font class="comment">// resolve link</font>
+00448 <font class="keywordflow">if</font> (!strncmp(tmpbuf, <font class="stringliteral">"@LINK"</font>, 5) &amp;&amp; (len ? len : strlen(buf))) {
+00449 <font class="keywordflow">for</font> (ch = tmpbuf; *ch; ch++) { <font class="comment">// null before nl</font>
+00450 <font class="keywordflow">if</font> (*ch == 10) {
+00451 *ch = 0;
+00452 <font class="keywordflow">break</font>;
+00453 }
+00454 }
+00455 findoffset(tmpbuf + 8, &amp;start, &amp;size, 0, &amp;idxoff);
+00456 }
+00457 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00458 }
+00459 <font class="keywordflow">while</font> (true); <font class="comment">// while we're resolving links</font>
+00460 }
+00461
+00462 endoff = lseek(idxfd-&gt;getFd(), 0, SEEK_END);
+00463
+00464 shiftSize = endoff - idxoff;
+00465
+00466 <font class="keywordflow">if</font> (shiftSize &gt; 0) {
+00467 idxBytes = <font class="keyword">new</font> <font class="keywordtype">char</font> [ shiftSize ];
+00468 lseek(idxfd-&gt;getFd(), idxoff, SEEK_SET);
+00469 read(idxfd-&gt;getFd(), idxBytes, shiftSize);
+00470 }
+00471
+00472 outbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ (len ? len : strlen(buf)) + strlen(key) + 5 ];
+00473 sprintf(outbuf, <font class="stringliteral">"%s%c%c"</font>, key, 13, 10);
+00474 size = strlen(outbuf);
+00475 memcpy (outbuf + size, buf, len ? len : strlen(buf));
+00476 size = outsize = size + (len ? len : strlen(buf));
+00477
+00478 start = outstart = lseek(datfd-&gt;getFd(), 0, SEEK_END);
+00479
+00480 outstart = archtosword32(start);
+00481 outsize = archtosword32(size);
+00482
+00483 lseek(idxfd-&gt;getFd(), idxoff, SEEK_SET);
+00484 <font class="keywordflow">if</font> (len ? len : strlen(buf)) {
+00485 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00486 write(datfd-&gt;getFd(), outbuf, (long)size);
+00487
+00488 <font class="comment">// add a new line to make data file easier to read in an editor</font>
+00489 write(datfd-&gt;getFd(), &amp;nl, 2);
+00490
+00491 write(idxfd-&gt;getFd(), &amp;outstart, 4);
+00492 write(idxfd-&gt;getFd(), &amp;outsize, 4);
+00493 <font class="keywordflow">if</font> (idxBytes) {
+00494 write(idxfd-&gt;getFd(), idxBytes, shiftSize);
+00495 <font class="keyword">delete</font> [] idxBytes;
+00496 }
+00497 }
+00498 <font class="keywordflow">else</font> { <font class="comment">// delete entry</font>
+00499 <font class="keywordflow">if</font> (idxBytes) {
+00500 write(idxfd-&gt;getFd(), idxBytes+8, shiftSize-8);
+00501 lseek(idxfd-&gt;getFd(), -1, SEEK_CUR); <font class="comment">// last valid byte</font>
+00502 FileMgr::systemFileMgr.trunc(idxfd); <font class="comment">// truncate index</font>
+00503 <font class="keyword">delete</font> [] idxBytes;
+00504 }
+00505 }
+00506
+00507 <font class="keyword">delete</font> [] key;
+00508 <font class="keyword">delete</font> [] outbuf;
+00509 free(dbKey);
+00510 }
+00511
+00512
+00513 <font class="comment">/******************************************************************************</font>
+00514 <font class="comment"> * RawLD::linkentry - links one entry to another</font>
+00515 <font class="comment"> *</font>
+00516 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00517 <font class="comment"> * destidxoff - dest offset into .vss</font>
+00518 <font class="comment"> * srcidxoff - source offset into .vss</font>
+00519 <font class="comment"> */</font>
+00520
+00521 <font class="keywordtype">void</font> RawStr4::linkentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *destkey, <font class="keyword">const</font> <font class="keywordtype">char</font> *srckey) {
+00522 <font class="keywordtype">char</font> *text = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(destkey) + 7 ];
+00523 sprintf(text, <font class="stringliteral">"@LINK %s"</font>, destkey);
+00524 settext(srckey, text);
+00525 <font class="keyword">delete</font> [] text;
+00526 }
+00527
+00528
+00529 <font class="comment">/******************************************************************************</font>
+00530 <font class="comment"> * RawLD::CreateModule - Creates new module files</font>
+00531 <font class="comment"> *</font>
+00532 <font class="comment"> * ENT: path - directory to store module files</font>
+00533 <font class="comment"> * RET: error status</font>
+00534 <font class="comment"> */</font>
+00535
+00536 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> RawStr4::createModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath)
+00537 {
+00538 <font class="keywordtype">char</font> *path = 0;
+00539 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00540 FileDesc *fd, *fd2;
+00541
+00542 stdstr(&amp;path, ipath);
+00543
+00544 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00545 path[strlen(path)-1] = 0;
+00546
+00547 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00548 unlink(buf);
+00549 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00550 fd-&gt;getFd();
+00551 FileMgr::systemFileMgr.close(fd);
+00552
+00553 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00554 unlink(buf);
+00555 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00556 fd2-&gt;getFd();
+00557 FileMgr::systemFileMgr.close(fd2);
+00558
+00559 <font class="keyword">delete</font> [] path;
+00560
+00561 <font class="keywordflow">return</font> 0;
+00562 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawstr4_8h-source.html b/doc/api-documentation/html/rawstr4_8h-source.html
new file mode 100644
index 0000000..df8bf4e
--- /dev/null
+++ b/doc/api-documentation/html/rawstr4_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawstr4.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawstr4.h</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> * rawstr.h - code for class 'RawStr'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class StrKey</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * $Id: rawstr4_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00010 <font class="comment"> * CrossWire Bible Society</font>
+00011 <font class="comment"> * P. O. Box 2528</font>
+00012 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00015 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00016 <font class="comment"> * Free Software Foundation version 2.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00019 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00020 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00021 <font class="comment"> * General Public License for more details.</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> */</font>
+00024
+00025 <font class="preprocessor">#ifndef RAWSTR4_H</font>
+00026 <font class="preprocessor"></font><font class="preprocessor">#define RAWSTR4_H</font>
+00027 <font class="preprocessor"></font>
+00028 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT RawStr4
+00033 {
+00034 <font class="keyword">static</font> <font class="keywordtype">int</font> instance; <font class="comment">// number of instantiated RawStr4 objects or derivitives</font>
+00035 <font class="keywordtype">char</font> *path;
+00036 <font class="keywordtype">long</font> lastoff;
+00037
+00038 <font class="keyword">protected</font>:
+00039 FileDesc *idxfd;
+00040 FileDesc *datfd;
+00041 <font class="keywordtype">void</font> preptext (<font class="keywordtype">char</font> *buf);
+00042 <font class="keywordtype">void</font> settext (<font class="keyword">const</font> <font class="keywordtype">char</font> *key, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len = 0);
+00043 <font class="keywordtype">void</font> linkentry (<font class="keyword">const</font> <font class="keywordtype">char</font> *destkey, <font class="keyword">const</font> <font class="keywordtype">char</font> *srckey);
+00044 <font class="keyword">public</font>:
+00045 <font class="keywordtype">char</font> nl;
+00046 RawStr4(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode = -1);
+00047 <font class="keyword">virtual</font> ~ RawStr4();
+00048 <font class="keywordtype">void</font> getidxbuf (<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf);
+00049 <font class="keywordtype">void</font> getidxbufdat (<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf);
+00050 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> findoffset (<font class="keyword">const</font> <font class="keywordtype">char</font> *key, <font class="keywordtype">long</font> *start, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *size,
+00051 <font class="keywordtype">long</font> away = 0, <font class="keywordtype">long</font> *idxoff = 0);
+00052 <font class="keywordtype">void</font> gettext (<font class="keywordtype">long</font> start, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size, <font class="keywordtype">char</font> *idxbuf, <font class="keywordtype">char</font> *buf);
+00053 <font class="keyword">static</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> createModule (<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
+00054 };
+00055
+00056 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawstr_8cpp-source.html b/doc/api-documentation/html/rawstr_8cpp-source.html
new file mode 100644
index 0000000..16d7bd3
--- /dev/null
+++ b/doc/api-documentation/html/rawstr_8cpp-source.html
@@ -0,0 +1,579 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawstr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawstr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawstr.cpp - code for class 'RawStr'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class StrKey</font>
+00006 <font class="comment"> */</font>
+00007
+00008
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00012
+00013 <font class="preprocessor">#ifndef __GNUC__</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00015 <font class="preprocessor">#else</font>
+00016 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00017 <font class="preprocessor">#endif</font>
+00018 <font class="preprocessor"></font>
+00019 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;rawstr.h&gt;</font>
+00023 <font class="preprocessor">#include &lt;sysdata.h&gt;</font>
+00024 <font class="comment">/******************************************************************************</font>
+00025 <font class="comment"> * RawStr Statics</font>
+00026 <font class="comment"> */</font>
+00027
+00028 <font class="keywordtype">int</font> RawStr::instance = 0;
+00029 <font class="keywordtype">char</font> RawStr::nl = <font class="charliteral">'\n'</font>;
+00030
+00031
+00032 <font class="comment">/******************************************************************************</font>
+00033 <font class="comment"> * RawStr Constructor - Initializes data for instance of RawStr</font>
+00034 <font class="comment"> *</font>
+00035 <font class="comment"> * ENT: ipath - path of the directory where data and index files are located.</font>
+00036 <font class="comment"> * be sure to include the trailing separator (e.g. '/' or '\')</font>
+00037 <font class="comment"> * (e.g. 'modules/texts/rawtext/webster/')</font>
+00038 <font class="comment"> */</font>
+00039
+00040 RawStr::RawStr(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode)
+00041 {
+00042 <font class="keywordtype">char</font> buf[127];
+00043
+00044 lastoff = -1;
+00045 path = 0;
+00046 stdstr(&amp;path, ipath);
+00047
+00048 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00049 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00050 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00051 <font class="preprocessor"></font>
+00052 <font class="keywordflow">if</font> (fileMode == -1) { <font class="comment">// try read/write if possible</font>
+00053 fileMode = O_RDWR;
+00054 }
+00055
+00056 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00057 idxfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00058
+00059 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00060 datfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00061
+00062 <font class="keywordflow">if</font> (datfd &lt; 0) {
+00063 sprintf(buf, <font class="stringliteral">"Error: %d"</font>, errno);
+00064 perror(buf);
+00065 }
+00066
+00067 instance++;
+00068 }
+00069
+00070
+00071 <font class="comment">/******************************************************************************</font>
+00072 <font class="comment"> * RawStr Destructor - Cleans up instance of RawStr</font>
+00073 <font class="comment"> */</font>
+00074
+00075 RawStr::~RawStr()
+00076 {
+00077 <font class="keywordflow">if</font> (path)
+00078 <font class="keyword">delete</font> [] path;
+00079
+00080 --instance;
+00081
+00082 FileMgr::systemFileMgr.close(idxfd);
+00083 FileMgr::systemFileMgr.close(datfd);
+00084 }
+00085
+00086
+00087 <font class="comment">/******************************************************************************</font>
+00088 <font class="comment"> * RawStr::getidxbufdat - Gets the index string at the given idx offset</font>
+00089 <font class="comment"> * NOTE: buf is allocated and must be freed by</font>
+00090 <font class="comment"> * calling function</font>
+00091 <font class="comment"> *</font>
+00092 <font class="comment"> * ENT: ioffset - offset in dat file to lookup</font>
+00093 <font class="comment"> * buf - address of pointer to allocate for storage of string</font>
+00094 <font class="comment"> */</font>
+00095
+00096 <font class="keywordtype">void</font> RawStr::getidxbufdat(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf)
+00097 {
+00098 <font class="keywordtype">int</font> size;
+00099 <font class="keywordtype">char</font> ch;
+00100 <font class="keywordflow">if</font> (datfd &gt; 0) {
+00101 lseek(datfd-&gt;getFd(), ioffset, SEEK_SET);
+00102 <font class="keywordflow">for</font> (size = 0; read(datfd-&gt;getFd(), &amp;ch, 1) == 1; size++) {
+00103 <font class="keywordflow">if</font> ((ch == <font class="charliteral">'\\'</font>) || (ch == 10) || (ch == 13))
+00104 <font class="keywordflow">break</font>;
+00105 }
+00106 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, size + 1) : (char *)malloc(size + 1);
+00107 <font class="keywordflow">if</font> (size) {
+00108 lseek(datfd-&gt;getFd(), ioffset, SEEK_SET);
+00109 read(datfd-&gt;getFd(), *buf, size);
+00110 }
+00111 (*buf)[size] = 0;
+00112 <font class="keywordflow">for</font> (size--; size &gt; 0; size--)
+00113 (*buf)[size] = SW_toupper((*buf)[size]);
+00114 }
+00115 <font class="keywordflow">else</font> {
+00116 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, 1) : (char *)malloc(1);
+00117 **buf = 0;
+00118 }
+00119 }
+00120
+00121
+00122 <font class="comment">/******************************************************************************</font>
+00123 <font class="comment"> * RawStr::getidxbuf - Gets the index string at the given idx offset</font>
+00124 <font class="comment"> * NOTE: buf is allocated and must be freed by</font>
+00125 <font class="comment"> * calling function</font>
+00126 <font class="comment"> *</font>
+00127 <font class="comment"> * ENT: ioffset - offset in idx file to lookup</font>
+00128 <font class="comment"> * buf - address of pointer to allocate for storage of string</font>
+00129 <font class="comment"> */</font>
+00130
+00131 <font class="keywordtype">void</font> RawStr::getidxbuf(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf)
+00132 {
+00133 <font class="keywordtype">char</font> *trybuf, *targetbuf;
+00134 <font class="keywordtype">long</font> offset;
+00135
+00136 <font class="keywordflow">if</font> (idxfd &gt; 0) {
+00137 lseek(idxfd-&gt;getFd(), ioffset, SEEK_SET);
+00138 read(idxfd-&gt;getFd(), &amp;offset, 4);
+00139
+00140 offset = swordtoarch32(offset);
+00141
+00142 getidxbufdat(offset, buf);
+00143 <font class="keywordflow">for</font> (trybuf = targetbuf = *buf; *trybuf; trybuf++, targetbuf++) {
+00144 <font class="comment">/*</font>
+00145 <font class="comment"> if (*trybuf == '-') { // ignore '-' because alphabetized silly in file</font>
+00146 <font class="comment"> targetbuf--;</font>
+00147 <font class="comment"> continue;</font>
+00148 <font class="comment"> }</font>
+00149 <font class="comment">*/</font>
+00150 *targetbuf = SW_toupper(*trybuf);
+00151 }
+00152 *targetbuf = 0;
+00153 trybuf = 0;
+00154 }
+00155 }
+00156
+00157
+00158 <font class="comment">/******************************************************************************</font>
+00159 <font class="comment"> * RawStr::findoffset - Finds the offset of the key string from the indexes</font>
+00160 <font class="comment"> *</font>
+00161 <font class="comment"> * ENT: key - key string to lookup</font>
+00162 <font class="comment"> * start - address to store the starting offset</font>
+00163 <font class="comment"> * size - address to store the size of the entry</font>
+00164 <font class="comment"> * away - number of entries before of after to jump</font>
+00165 <font class="comment"> * (default = 0)</font>
+00166 <font class="comment"> *</font>
+00167 <font class="comment"> * RET: error status</font>
+00168 <font class="comment"> */</font>
+00169
+00170 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> RawStr::findoffset(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keywordtype">long</font> *start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *size, <font class="keywordtype">long</font> away, <font class="keywordtype">long</font> *idxoff)
+00171 {
+00172 <font class="keywordtype">char</font> *trybuf, *targetbuf, *key, quitflag = 0;
+00173 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> retval = 0;
+00174 <font class="keywordtype">long</font> headoff, tailoff, tryoff = 0, maxoff = 0;
+00175
+00176 <font class="keywordflow">if</font> (idxfd-&gt;getFd() &gt;=0) {
+00177 tailoff = maxoff = lseek(idxfd-&gt;getFd(), 0, SEEK_END) - 6;
+00178 <font class="keywordflow">if</font> (*ikey) {
+00179 headoff = 0;
+00180
+00181 key = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(ikey) + 1 ];
+00182 strcpy(key, ikey);
+00183
+00184 <font class="keywordflow">for</font> (trybuf = targetbuf = key; *trybuf; trybuf++, targetbuf++) {
+00185 <font class="comment">/*</font>
+00186 <font class="comment"> if (*trybuf == '-') { // ignore '-' because alphabetized silly in file</font>
+00187 <font class="comment"> targetbuf--;</font>
+00188 <font class="comment"> continue;</font>
+00189 <font class="comment"> }</font>
+00190 <font class="comment"> */</font>
+00191 *targetbuf = SW_toupper(*trybuf);
+00192 }
+00193 *targetbuf = 0;
+00194 trybuf = 0;
+00195
+00196 <font class="keywordflow">while</font> (headoff &lt; tailoff) {
+00197 tryoff = (lastoff == -1) ? headoff + ((((tailoff / 6) - (headoff / 6))) / 2) * 6 : lastoff;
+00198 lastoff = -1;
+00199 getidxbuf(tryoff, &amp;trybuf);
+00200
+00201 <font class="keywordflow">if</font> (!*trybuf &amp;&amp; tryoff) { <font class="comment">// In case of extra entry at end of idx (not first entry)</font>
+00202 tryoff += (tryoff &gt; (maxoff / 2))?-6:6;
+00203 retval = -1;
+00204 <font class="keywordflow">break</font>;
+00205 }
+00206
+00207 <font class="keywordflow">if</font> (!strcmp(key, trybuf))
+00208 <font class="keywordflow">break</font>;
+00209
+00210 <font class="keywordtype">int</font> diff = strcmp(key, trybuf);
+00211 <font class="keywordflow">if</font> (diff &lt; 0)
+00212 tailoff = (tryoff == headoff) ? headoff : tryoff;
+00213 <font class="keywordflow">else</font> headoff = tryoff;
+00214 <font class="keywordflow">if</font> (tailoff == headoff + 6) {
+00215 <font class="keywordflow">if</font> (quitflag++)
+00216 headoff = tailoff;
+00217 }
+00218 }
+00219 <font class="keywordflow">if</font> (headoff &gt;= tailoff)
+00220 tryoff = headoff;
+00221 <font class="keywordflow">if</font> (trybuf)
+00222 free(trybuf);
+00223 <font class="keyword">delete</font> [] key;
+00224 }
+00225 <font class="keywordflow">else</font> tryoff = 0;
+00226
+00227 lseek(idxfd-&gt;getFd(), tryoff, SEEK_SET);
+00228
+00229 *start = *size = 0;
+00230 read(idxfd-&gt;getFd(), start, 4);
+00231 read(idxfd-&gt;getFd(), size, 2);
+00232 <font class="keywordflow">if</font> (idxoff)
+00233 *idxoff = tryoff;
+00234
+00235 *start = swordtoarch32(*start);
+00236 *size = swordtoarch16(*size);
+00237
+00238 <font class="keywordflow">while</font> (away) {
+00239 <font class="keywordtype">long</font> laststart = *start;
+00240 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> lastsize = *size;
+00241 <font class="keywordtype">long</font> lasttry = tryoff;
+00242 tryoff += (away &gt; 0) ? 6 : -6;
+00243
+00244 <font class="keywordtype">bool</font> bad = <font class="keyword">false</font>;
+00245 <font class="keywordflow">if</font> (((tryoff + (away*6)) &lt; -6) || (tryoff + (away*6) &gt; (maxoff+6)))
+00246 bad = <font class="keyword">true</font>;
+00247 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (lseek(idxfd-&gt;getFd(), tryoff, SEEK_SET) &lt; 0)
+00248 bad = <font class="keyword">true</font>;
+00249 <font class="keywordflow">if</font> (bad) {
+00250 retval = -1;
+00251 *start = laststart;
+00252 *size = lastsize;
+00253 tryoff = lasttry;
+00254 <font class="keywordflow">if</font> (idxoff)
+00255 *idxoff = tryoff;
+00256 <font class="keywordflow">break</font>;
+00257 }
+00258 read(idxfd-&gt;getFd(), start, 4);
+00259 read(idxfd-&gt;getFd(), size, 2);
+00260 <font class="keywordflow">if</font> (idxoff)
+00261 *idxoff = tryoff;
+00262
+00263 *start = swordtoarch32(*start);
+00264 *size = swordtoarch16(*size);
+00265
+00266 <font class="keywordflow">if</font> (((laststart != *start) || (lastsize != *size)) &amp;&amp; (*start &gt;= 0) &amp;&amp; (*size))
+00267 away += (away &lt; 0) ? 1 : -1;
+00268 }
+00269
+00270 lastoff = tryoff;
+00271 }
+00272 <font class="keywordflow">else</font> {
+00273 *start = 0;
+00274 *size = 0;
+00275 <font class="keywordflow">if</font> (idxoff)
+00276 *idxoff = 0;
+00277 retval = -1;
+00278 }
+00279 <font class="keywordflow">return</font> retval;
+00280 }
+00281
+00282
+00283 <font class="comment">/******************************************************************************</font>
+00284 <font class="comment"> * RawStr::preptext - Prepares the text before returning it to external</font>
+00285 <font class="comment"> * objects</font>
+00286 <font class="comment"> *</font>
+00287 <font class="comment"> * ENT: buf - buffer where text is stored and where to store the prep'd</font>
+00288 <font class="comment"> * text.</font>
+00289 <font class="comment"> */</font>
+00290
+00291 <font class="keywordtype">void</font> RawStr::preptext(<font class="keywordtype">char</font> *buf) {
+00292 <font class="keywordtype">char</font> *to, *from, space = 0, cr = 0, realdata = 0, nlcnt = 0;
+00293
+00294 <font class="keywordflow">for</font> (to = from = buf; *from; from++) {
+00295 <font class="keywordflow">switch</font> (*from) {
+00296 <font class="keywordflow">case</font> 10:
+00297 <font class="keywordflow">if</font> (!realdata)
+00298 <font class="keywordflow">continue</font>;
+00299 space = (cr) ? 0 : 1;
+00300 cr = 0;
+00301 nlcnt++;
+00302 <font class="keywordflow">if</font> (nlcnt &gt; 1) {
+00303 <font class="comment">// *to++ = nl;</font>
+00304 *to++ = nl;
+00305 <font class="comment">// nlcnt = 0;</font>
+00306 }
+00307 <font class="keywordflow">continue</font>;
+00308 <font class="keywordflow">case</font> 13:
+00309 <font class="keywordflow">if</font> (!realdata)
+00310 <font class="keywordflow">continue</font>;
+00311 *to++ = nl;
+00312 space = 0;
+00313 cr = 1;
+00314 <font class="keywordflow">continue</font>;
+00315 }
+00316 realdata = 1;
+00317 nlcnt = 0;
+00318 <font class="keywordflow">if</font> (space) {
+00319 space = 0;
+00320 <font class="keywordflow">if</font> (*from != <font class="charliteral">' '</font>) {
+00321 *to++ = <font class="charliteral">' '</font>;
+00322 from--;
+00323 <font class="keywordflow">continue</font>;
+00324 }
+00325 }
+00326 *to++ = *from;
+00327 }
+00328 *to = 0;
+00329
+00330 <font class="keywordflow">while</font> (to &gt; (buf+1)) { <font class="comment">// remove trailing excess</font>
+00331 to--;
+00332 <font class="keywordflow">if</font> ((*to == 10) || (*to == <font class="charliteral">' '</font>))
+00333 *to = 0;
+00334 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00335 }
+00336 }
+00337
+00338
+00339 <font class="comment">/******************************************************************************</font>
+00340 <font class="comment"> * RawStr::gettext - gets text at a given offset</font>
+00341 <font class="comment"> *</font>
+00342 <font class="comment"> * ENT:</font>
+00343 <font class="comment"> * start - starting offset where the text is located in the file</font>
+00344 <font class="comment"> * size - size of text entry</font>
+00345 <font class="comment"> * buf - buffer to store text</font>
+00346 <font class="comment"> *</font>
+00347 <font class="comment"> */</font>
+00348
+00349 <font class="keywordtype">void</font> RawStr::gettext(<font class="keywordtype">long</font> istart, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> isize, <font class="keywordtype">char</font> *idxbuf, <font class="keywordtype">char</font> *buf)
+00350 {
+00351 <font class="keywordtype">char</font> *ch;
+00352 <font class="keywordtype">char</font> *idxbuflocal = 0;
+00353 getidxbufdat(istart, &amp;idxbuflocal);
+00354 <font class="keywordtype">long</font> start = istart;
+00355 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = isize;
+00356
+00357 <font class="keywordflow">do</font> {
+00358 memset(buf, 0, size);
+00359 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00360 read(datfd-&gt;getFd(), buf, (int)(size - 2));
+00361
+00362 <font class="keywordflow">for</font> (ch = buf; *ch; ch++) { <font class="comment">// skip over index string</font>
+00363 <font class="keywordflow">if</font> (*ch == 10) {
+00364 ch++;
+00365 <font class="keywordflow">break</font>;
+00366 }
+00367 }
+00368 size -= (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)(ch-buf);
+00369 memmove(buf, ch, size);
+00370 buf[size] = 0;
+00371 buf[size+1] = 0;
+00372
+00373 <font class="comment">// resolve link</font>
+00374 <font class="keywordflow">if</font> (!strncmp(buf, <font class="stringliteral">"@LINK"</font>, 5)) {
+00375 <font class="keywordflow">for</font> (ch = buf; *ch; ch++) { <font class="comment">// null before nl</font>
+00376 <font class="keywordflow">if</font> (*ch == 10) {
+00377 *ch = 0;
+00378 <font class="keywordflow">break</font>;
+00379 }
+00380 }
+00381 findoffset(buf + 6, &amp;start, &amp;size);
+00382 <font class="comment">// TODO: FIX! THIS IS WRONG!!! buf is not reallocated for the appropriate size!</font>
+00383 }
+00384 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00385 }
+00386 <font class="keywordflow">while</font> (true); <font class="comment">// while we're resolving links</font>
+00387
+00388 <font class="keywordflow">if</font> (idxbuflocal) {
+00389 <font class="keywordtype">int</font> localsize = strlen(idxbuflocal);
+00390 localsize = (localsize &lt; (size - 1)) ? localsize : (size - 1);
+00391 strncpy(idxbuf, idxbuflocal, localsize);
+00392 idxbuf[localsize] = 0;
+00393 free(idxbuflocal);
+00394 }
+00395 }
+00396
+00397
+00398 <font class="comment">/******************************************************************************</font>
+00399 <font class="comment"> * RawLD::settext - Sets text for current offset</font>
+00400 <font class="comment"> *</font>
+00401 <font class="comment"> * ENT: key - key for this entry</font>
+00402 <font class="comment"> * buf - buffer to store</font>
+00403 <font class="comment"> * len - length of buffer (0 - null terminated)</font>
+00404 <font class="comment"> */</font>
+00405
+00406 <font class="keywordtype">void</font> RawStr::settext(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len)
+00407 {
+00408
+00409 <font class="keywordtype">long</font> start, outstart;
+00410 <font class="keywordtype">long</font> idxoff;
+00411 <font class="keywordtype">long</font> endoff;
+00412 <font class="keywordtype">long</font> shiftSize;
+00413 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00414 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> outsize;
+00415 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> nl[] = {13, 10};
+00416 <font class="keywordtype">char</font> *tmpbuf = 0;
+00417 <font class="keywordtype">char</font> *key = 0;
+00418 <font class="keywordtype">char</font> *dbKey = 0;
+00419 <font class="keywordtype">char</font> *idxBytes = 0;
+00420 <font class="keywordtype">char</font> *outbuf = 0;
+00421 <font class="keywordtype">char</font> *ch = 0;
+00422
+00423 findoffset(ikey, &amp;start, &amp;size, 0, &amp;idxoff);
+00424 stdstr(&amp;key, ikey);
+00425 <font class="keywordflow">for</font> (ch = key; *ch; ch++)
+00426 *ch = SW_toupper(*ch);
+00427 ch = 0;
+00428
+00429 getidxbufdat(start, &amp;dbKey);
+00430
+00431 <font class="keywordflow">if</font> (strcmp(key, dbKey) &lt; 0) {
+00432 }
+00433 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (strcmp(key, dbKey) &gt; 0) {
+00434 idxoff += 6;
+00435 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((!strcmp(key, dbKey)) &amp;&amp; (len || strlen(buf) <font class="comment">/*we're not deleting*/</font>)) { <font class="comment">// got absolute entry</font>
+00436 <font class="keywordflow">do</font> {
+00437 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size + 2 ];
+00438 memset(tmpbuf, 0, size + 2);
+00439 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00440 read(datfd-&gt;getFd(), tmpbuf, (int)(size - 1));
+00441
+00442 <font class="keywordflow">for</font> (ch = tmpbuf; *ch; ch++) { <font class="comment">// skip over index string</font>
+00443 <font class="keywordflow">if</font> (*ch == 10) {
+00444 ch++;
+00445 <font class="keywordflow">break</font>;
+00446 }
+00447 }
+00448 memmove(tmpbuf, ch, size - (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)(ch-tmpbuf));
+00449
+00450 <font class="comment">// resolve link</font>
+00451 <font class="keywordflow">if</font> (!strncmp(tmpbuf, <font class="stringliteral">"@LINK"</font>, 5) &amp;&amp; (len ? len : strlen(buf))) {
+00452 <font class="keywordflow">for</font> (ch = tmpbuf; *ch; ch++) { <font class="comment">// null before nl</font>
+00453 <font class="keywordflow">if</font> (*ch == 10) {
+00454 *ch = 0;
+00455 <font class="keywordflow">break</font>;
+00456 }
+00457 }
+00458 findoffset(tmpbuf + 6, &amp;start, &amp;size, 0, &amp;idxoff);
+00459 }
+00460 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00461 }
+00462 <font class="keywordflow">while</font> (true); <font class="comment">// while we're resolving links</font>
+00463 }
+00464
+00465 endoff = lseek(idxfd-&gt;getFd(), 0, SEEK_END);
+00466
+00467 shiftSize = endoff - idxoff;
+00468
+00469 <font class="keywordflow">if</font> (shiftSize &gt; 0) {
+00470 idxBytes = <font class="keyword">new</font> <font class="keywordtype">char</font> [ shiftSize ];
+00471 lseek(idxfd-&gt;getFd(), idxoff, SEEK_SET);
+00472 read(idxfd-&gt;getFd(), idxBytes, shiftSize);
+00473 }
+00474
+00475 outbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ (len ? len : strlen(buf)) + strlen(key) + 5 ];
+00476 sprintf(outbuf, <font class="stringliteral">"%s%c%c"</font>, key, 13, 10);
+00477 size = strlen(outbuf);
+00478 memcpy (outbuf + size, buf, len ? len : strlen(buf));
+00479 size = outsize = size + (len ? len : strlen(buf));
+00480
+00481 start = outstart = lseek(datfd-&gt;getFd(), 0, SEEK_END);
+00482
+00483 outstart = archtosword32(start);
+00484 outsize = archtosword16(size);
+00485
+00486 lseek(idxfd-&gt;getFd(), idxoff, SEEK_SET);
+00487 <font class="keywordflow">if</font> (len ? len : strlen(buf)) {
+00488 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00489 write(datfd-&gt;getFd(), outbuf, (int)size);
+00490
+00491 <font class="comment">// add a new line to make data file easier to read in an editor</font>
+00492 write(datfd-&gt;getFd(), &amp;nl, 2);
+00493
+00494 write(idxfd-&gt;getFd(), &amp;outstart, 4);
+00495 write(idxfd-&gt;getFd(), &amp;outsize, 2);
+00496 <font class="keywordflow">if</font> (idxBytes) {
+00497 write(idxfd-&gt;getFd(), idxBytes, shiftSize);
+00498 <font class="keyword">delete</font> [] idxBytes;
+00499 }
+00500 }
+00501 <font class="keywordflow">else</font> { <font class="comment">// delete entry</font>
+00502 <font class="keywordflow">if</font> (idxBytes) {
+00503 write(idxfd-&gt;getFd(), idxBytes+6, shiftSize-6);
+00504 lseek(idxfd-&gt;getFd(), -1, SEEK_CUR); <font class="comment">// last valid byte</font>
+00505 FileMgr::systemFileMgr.trunc(idxfd); <font class="comment">// truncate index</font>
+00506 <font class="keyword">delete</font> [] idxBytes;
+00507 }
+00508 }
+00509
+00510 <font class="keyword">delete</font> [] key;
+00511 <font class="keyword">delete</font> [] outbuf;
+00512 free(dbKey);
+00513 }
+00514
+00515
+00516 <font class="comment">/******************************************************************************</font>
+00517 <font class="comment"> * RawLD::linkentry - links one entry to another</font>
+00518 <font class="comment"> *</font>
+00519 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00520 <font class="comment"> * destidxoff - dest offset into .vss</font>
+00521 <font class="comment"> * srcidxoff - source offset into .vss</font>
+00522 <font class="comment"> */</font>
+00523
+00524 <font class="keywordtype">void</font> RawStr::linkentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *destkey, <font class="keyword">const</font> <font class="keywordtype">char</font> *srckey) {
+00525 <font class="keywordtype">char</font> *text = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(destkey) + 7 ];
+00526 sprintf(text, <font class="stringliteral">"@LINK %s"</font>, destkey);
+00527 settext(srckey, text);
+00528 <font class="keyword">delete</font> [] text;
+00529 }
+00530
+00531
+00532 <font class="comment">/******************************************************************************</font>
+00533 <font class="comment"> * RawLD::CreateModule - Creates new module files</font>
+00534 <font class="comment"> *</font>
+00535 <font class="comment"> * ENT: path - directory to store module files</font>
+00536 <font class="comment"> * RET: error status</font>
+00537 <font class="comment"> */</font>
+00538
+00539 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> RawStr::createModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath)
+00540 {
+00541 <font class="keywordtype">char</font> *path = 0;
+00542 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00543 FileDesc *fd, *fd2;
+00544
+00545 stdstr(&amp;path, ipath);
+00546
+00547 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00548 path[strlen(path)-1] = 0;
+00549
+00550 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00551 unlink(buf);
+00552 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00553 fd-&gt;getFd();
+00554 FileMgr::systemFileMgr.close(fd);
+00555
+00556 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00557 unlink(buf);
+00558 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00559 fd2-&gt;getFd();
+00560 FileMgr::systemFileMgr.close(fd2);
+00561
+00562 <font class="keyword">delete</font> [] path;
+00563
+00564 <font class="keywordflow">return</font> 0;
+00565 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawstr_8h-source.html b/doc/api-documentation/html/rawstr_8h-source.html
new file mode 100644
index 0000000..c6c17c9
--- /dev/null
+++ b/doc/api-documentation/html/rawstr_8h-source.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawstr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawstr.h</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> * rawstr.h - code for class 'RawStr'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class StrKey</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * $Id: rawstr_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00010 <font class="comment"> * CrossWire Bible Society</font>
+00011 <font class="comment"> * P. O. Box 2528</font>
+00012 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00015 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00016 <font class="comment"> * Free Software Foundation version 2.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00019 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00020 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00021 <font class="comment"> * General Public License for more details.</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> */</font>
+00024
+00025 <font class="preprocessor">#ifndef RAWSTR_H</font>
+00026 <font class="preprocessor"></font><font class="preprocessor">#define RAWSTR_H</font>
+00027 <font class="preprocessor"></font>
+00028 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT RawStr {
+00033 <font class="keyword">static</font> <font class="keywordtype">int</font> instance; <font class="comment">// number of instantiated RawStr objects or derivitives</font>
+00034 <font class="keywordtype">char</font> *path;
+00035 <font class="keywordtype">long</font> lastoff;
+00036
+00037 <font class="keyword">protected</font>:
+00038 FileDesc *idxfd;
+00039 FileDesc *datfd;
+00040 <font class="keywordtype">void</font> settext(<font class="keyword">const</font> <font class="keywordtype">char</font> *key, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len = 0);
+00041 <font class="keywordtype">void</font> linkentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *destkey, <font class="keyword">const</font> <font class="keywordtype">char</font> *srckey);
+00042 <font class="keyword">public</font>:
+00043 <font class="keyword">static</font> <font class="keywordtype">void</font> preptext(<font class="keywordtype">char</font> *buf);
+00044 <font class="keyword">static</font> <font class="keywordtype">char</font> nl;
+00045 RawStr(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode = -1);
+00046 <font class="keyword">virtual</font> ~RawStr ();
+00047 <font class="keywordtype">void</font> getidxbuf(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf);
+00048 <font class="keywordtype">void</font> getidxbufdat(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf);
+00049 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> findoffset(<font class="keyword">const</font> <font class="keywordtype">char</font> *key, <font class="keywordtype">long</font> *start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *size, <font class="keywordtype">long</font> away = 0, <font class="keywordtype">long</font> *idxoff = 0);
+00050 <font class="keywordtype">void</font> gettext(<font class="keywordtype">long</font> start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size, <font class="keywordtype">char</font> *idxbuf, <font class="keywordtype">char</font> *buf);
+00051 <font class="keyword">static</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> createModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
+00052 };
+00053
+00054 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawtext_8cpp-source.html b/doc/api-documentation/html/rawtext_8cpp-source.html
new file mode 100644
index 0000000..599021e
--- /dev/null
+++ b/doc/api-documentation/html/rawtext_8cpp-source.html
@@ -0,0 +1,644 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawtext.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawtext.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawtext.cpp - code for class 'RawText'- a module that reads raw text files:</font>
+00003 <font class="comment"> * ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00009
+00010 <font class="preprocessor">#ifndef __GNUC__</font>
+00011 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00012 <font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00017 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;rawtext.h&gt;</font>
+00020
+00021 <font class="preprocessor">#include &lt;map&gt;</font>
+00022 <font class="preprocessor">#include &lt;list&gt;</font>
+00023 <font class="preprocessor">#include &lt;algorithm&gt;</font>
+00024 <font class="preprocessor">#include &lt;regex.h&gt;</font> <font class="comment">// GNU</font>
+00025
+00026 <font class="preprocessor">#ifndef O_BINARY</font>
+00027 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0</font>
+00028 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00029 <font class="preprocessor"></font>
+00030 <font class="comment">/******************************************************************************</font>
+00031 <font class="comment"> * RawText Constructor - Initializes data for instance of RawText</font>
+00032 <font class="comment"> *</font>
+00033 <font class="comment"> * ENT: iname - Internal name for module</font>
+00034 <font class="comment"> * idesc - Name to display to user for module</font>
+00035 <font class="comment"> * idisp - Display object to use for displaying</font>
+00036 <font class="comment"> */</font>
+00037
+00038 RawText::RawText(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang)
+00039 : <a class="code" href="class_s_w_text.html">SWText</a>(iname, idesc, idisp, enc, dir, mark, ilang),
+00040 RawVerse(ipath) {
+00041
+00042 string fname;
+00043 fname = path;
+00044 <font class="keywordtype">char</font> ch = fname.c_str()[strlen(fname.c_str())-1];
+00045 <font class="keywordflow">if</font> ((ch != <font class="charliteral">'/'</font>) &amp;&amp; (ch != <font class="charliteral">'\\'</font>))
+00046 fname += <font class="stringliteral">"/"</font>;
+00047
+00048 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> loop = 0; loop &lt; 2; loop++) {
+00049 fastSearch[loop] = 0;
+00050 string fastidxname =(fname + ((loop)?<font class="stringliteral">"ntwords.dat"</font>:<font class="stringliteral">"otwords.dat"</font>));
+00051 <font class="keywordflow">if</font> (!access(fastidxname.c_str(), 04)) {
+00052 fastidxname = (fname + ((loop)?<font class="stringliteral">"ntwords.idx"</font>:<font class="stringliteral">"otwords.idx"</font>));
+00053 <font class="keywordflow">if</font> (!access(fastidxname.c_str(), 04))
+00054 fastSearch[loop] = <font class="keyword">new</font> RawStr((fname + ((loop)?<font class="stringliteral">"ntwords"</font>:<font class="stringliteral">"otwords"</font>)).c_str());
+00055 }
+00056 }
+00057 }
+00058
+00059
+00060 <font class="comment">/******************************************************************************</font>
+00061 <font class="comment"> * RawText Destructor - Cleans up instance of RawText</font>
+00062 <font class="comment"> */</font>
+00063
+00064 RawText::~RawText()
+00065 {
+00066 <font class="keywordflow">if</font> (fastSearch[0])
+00067 <font class="keyword">delete</font> fastSearch[0];
+00068
+00069 <font class="keywordflow">if</font> (fastSearch[1])
+00070 <font class="keyword">delete</font> fastSearch[1];
+00071 }
+00072
+00073
+00074 <font class="comment">/******************************************************************************</font>
+00075 <font class="comment"> * RawText::operator char * - Returns the correct verse when char * cast</font>
+00076 <font class="comment"> * is requested</font>
+00077 <font class="comment"> *</font>
+00078 <font class="comment"> * RET: string buffer with verse</font>
+00079 <font class="comment"> */</font>
+00080
+00081 <font class="keywordtype">char</font> *RawText::getRawEntry() {
+00082 <font class="keywordtype">long</font> start = 0;
+00083 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = 0;
+00084 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00085
+00086 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00087 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00088 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00089 <font class="preprocessor">#endif</font>
+00090 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00091 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00092 <font class="preprocessor"></font> }
+00093 <font class="keywordflow">catch</font> ( ... ) { }
+00094 <font class="preprocessor">#endif</font>
+00095 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00096 <font class="keywordflow">if</font> (!key)
+00097 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00098
+00099 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00100 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00101
+00102 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> newsize = (size + 2) * FILTERPAD;
+00103 <font class="keywordflow">if</font> (newsize &gt; entrybufallocsize) {
+00104 <font class="keywordflow">if</font> (entrybuf)
+00105 <font class="keyword">delete</font> [] entrybuf;
+00106 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ newsize ];
+00107 entrybufallocsize = newsize;
+00108 }
+00109 *entrybuf = 0;
+00110
+00111 gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, (size + 2), entrybuf);
+00112
+00113 rawFilter(entrybuf, size, key);
+00114
+00115 <font class="keywordflow">if</font> (!isUnicode())
+00116 preptext(entrybuf);
+00117
+00118 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00119 <font class="keyword">delete</font> key;
+00120
+00121 <font class="keywordflow">return</font> entrybuf;
+00122 }
+00123
+00124
+00125 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> RawText::createSearchFramework() {
+00126 <a class="code" href="class_s_w_key.html">SWKey</a> *savekey = 0;
+00127 <a class="code" href="class_s_w_key.html">SWKey</a> *searchkey = 0;
+00128 <a class="code" href="class_s_w_key.html">SWKey</a> textkey;
+00129 <font class="keywordtype">char</font> *word = 0;
+00130 <font class="keywordtype">char</font> *wordBuf = 0;
+00131
+00132 <font class="comment">// dictionary holds words associated with a list</font>
+00133 <font class="comment">// containing every module position that contains</font>
+00134 <font class="comment">// the word. [0] Old Testament; [1] NT</font>
+00135 map &lt; string, list&lt;long&gt; &gt; dictionary[2];
+00136
+00137
+00138 <font class="comment">// save key information so as not to disrupt original</font>
+00139 <font class="comment">// module position</font>
+00140 <font class="keywordflow">if</font> (!key-&gt;Persist()) {
+00141 savekey = CreateKey();
+00142 *savekey = *key;
+00143 }
+00144 <font class="keywordflow">else</font> savekey = key;
+00145
+00146 searchkey = (key-&gt;Persist())?key-&gt;<a class="code" href="class_s_w_key.html#a3">clone</a>():0;
+00147 <font class="keywordflow">if</font> (searchkey) {
+00148 searchkey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>(1);
+00149 SetKey(*searchkey);
+00150 }
+00151
+00152 <font class="comment">// position module at the beginning</font>
+00153 *<font class="keyword">this</font> = TOP;
+00154
+00155 <a class="code" href="class_verse_key.html">VerseKey</a> *lkey = (<a class="code" href="class_verse_key.html">VerseKey</a> *)key;
+00156
+00157 <font class="comment">// iterate thru each entry in module</font>
+00158 <font class="keywordflow">while</font> (!Error()) {
+00159 <font class="keywordtype">long</font> index = lkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>();
+00160 wordBuf = (<font class="keywordtype">char</font> *)calloc(<font class="keyword">sizeof</font>(<font class="keywordtype">char</font>), strlen(StripText()) + 1);
+00161 strcpy(wordBuf, StripText());
+00162
+00163 <font class="comment">// grab each word from the text</font>
+00164 word = strtok(wordBuf, <font class="stringliteral">" !.,?;:()-=+/\\|{}[]\"&lt;&gt;"</font>);
+00165 <font class="keywordflow">while</font> (word) {
+00166
+00167 <font class="comment">// make work upper case</font>
+00168 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 0; i &lt; strlen(word); i++)
+00169 word[i] = SW_toupper(word[i]);
+00170
+00171 <font class="comment">// lookup word in dictionary (or make entry in dictionary</font>
+00172 <font class="comment">// for this word) and add this module position (index) to</font>
+00173 <font class="comment">// the word's associated list of module positions</font>
+00174 dictionary[lkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>()-1][word].push_back(index);
+00175 word = strtok(NULL, <font class="stringliteral">" !.,?;:()-=+/\\|{}[]\"&lt;&gt;"</font>);
+00176 }
+00177 free(wordBuf);
+00178 (*this)++;
+00179 }
+00180
+00181 <font class="comment">// reposition module back to where it was before we were called</font>
+00182 SetKey(*savekey);
+00183
+00184 <font class="keywordflow">if</font> (!savekey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00185 <font class="keyword">delete</font> savekey;
+00186
+00187 <font class="keywordflow">if</font> (searchkey)
+00188 <font class="keyword">delete</font> searchkey;
+00189
+00190
+00191 <font class="comment">// --------- Let's output an index from our dictionary -----------</font>
+00192 <font class="keywordtype">int</font> datfd;
+00193 <font class="keywordtype">int</font> idxfd;
+00194 map &lt; string, list&lt;long&gt; &gt;::iterator it;
+00195 list&lt;long&gt;::iterator it2;
+00196 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, entryoff;
+00197 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00198
+00199 string fname;
+00200 fname = path;
+00201 <font class="keywordtype">char</font> ch = fname.c_str()[strlen(fname.c_str())-1];
+00202 <font class="keywordflow">if</font> ((ch != <font class="charliteral">'/'</font>) &amp;&amp; (ch != <font class="charliteral">'\\'</font>))
+00203 fname += <font class="stringliteral">"/"</font>;
+00204
+00205 <font class="comment">// for old and new testament do...</font>
+00206 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> loop = 0; loop &lt; 2; loop++) {
+00207 <font class="keywordflow">if</font> ((datfd = open((fname + ((loop)?<font class="stringliteral">"ntwords.dat"</font>:<font class="stringliteral">"otwords.dat"</font>)).c_str(), O_CREAT|O_WRONLY|O_BINARY, 00644 )) == -1)
+00208 <font class="keywordflow">return</font> -1;
+00209 <font class="keywordflow">if</font> ((idxfd = open((fname + ((loop)?<font class="stringliteral">"ntwords.idx"</font>:<font class="stringliteral">"otwords.idx"</font>)).c_str(), O_CREAT|O_WRONLY|O_BINARY, 00644 )) == -1) {
+00210 close(datfd);
+00211 <font class="keywordflow">return</font> -1;
+00212 }
+00213
+00214 <font class="comment">// iterate thru each word in the dictionary</font>
+00215 <font class="keywordflow">for</font> (it = dictionary[loop].begin(); it != dictionary[loop].end(); it++) {
+00216 printf(<font class="stringliteral">"%s: "</font>, it-&gt;first.c_str());
+00217
+00218 <font class="comment">// get our current offset in our word.dat file and write this as the start</font>
+00219 <font class="comment">// of the next entry in our database</font>
+00220 offset = lseek(datfd, 0, SEEK_CUR);
+00221 write(idxfd, &amp;offset, 4);
+00222
+00223 <font class="comment">// write our word out to the word.dat file, delineating with a \n</font>
+00224 write(datfd, it-&gt;first.c_str(), strlen(it-&gt;first.c_str()));
+00225 write(datfd, <font class="stringliteral">"\n"</font>, 1);
+00226
+00227 <font class="comment">// force our mod position list for this word to be unique (remove</font>
+00228 <font class="comment">// duplicates that may exist if the word was found more than once</font>
+00229 <font class="comment">// in the verse</font>
+00230 it-&gt;second.unique();
+00231
+00232 <font class="comment">// iterate thru each mod position for this word and output it to</font>
+00233 <font class="comment">// our database</font>
+00234 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> count = 0;
+00235 <font class="keywordflow">for</font> (it2 = it-&gt;second.begin(); it2 != it-&gt;second.end(); it2++) {
+00236 entryoff= *it2;
+00237 write(datfd, &amp;entryoff, 4);
+00238 count++;
+00239 }
+00240
+00241 <font class="comment">// now see what our new position is in our word.dat file and</font>
+00242 <font class="comment">// determine the size of this database entry</font>
+00243 size = lseek(datfd, 0, SEEK_CUR) - offset;
+00244
+00245 <font class="comment">// store the size of this database entry</font>
+00246 write(idxfd, &amp;size, 2);
+00247 printf(<font class="stringliteral">"%d entries (size: %d)\n"</font>, count, size);
+00248 }
+00249 close(datfd);
+00250 close(idxfd);
+00251 }
+00252 <font class="keywordflow">return</font> 0;
+00253 }
+00254
+00255
+00256 <font class="comment">/******************************************************************************</font>
+00257 <font class="comment"> * SWModule::Search - Searches a module for a string</font>
+00258 <font class="comment"> *</font>
+00259 <font class="comment"> * ENT: istr - string for which to search</font>
+00260 <font class="comment"> * searchType - type of search to perform</font>
+00261 <font class="comment"> * &gt;=0 - regex</font>
+00262 <font class="comment"> * -1 - phrase</font>
+00263 <font class="comment"> * -2 - multiword</font>
+00264 <font class="comment"> * flags - options flags for search</font>
+00265 <font class="comment"> * justCheckIfSupported - if set, don't search, only tell if this</font>
+00266 <font class="comment"> * function supports requested search.</font>
+00267 <font class="comment"> *</font>
+00268 <font class="comment"> * RET: listkey set to verses that contain istr</font>
+00269 <font class="comment"> */</font>
+00270
+00271 <a class="code" href="class_list_key.html">ListKey</a> &amp;RawText::Search(<font class="keyword">const</font> <font class="keywordtype">char</font> *istr, <font class="keywordtype">int</font> searchType, <font class="keywordtype">int</font> flags, <a class="code" href="class_s_w_key.html">SWKey</a> *scope, <font class="keywordtype">bool</font> *justCheckIfSupported, <font class="keywordtype">void</font> (*percent)(<font class="keywordtype">char</font>, <font class="keywordtype">void</font> *), <font class="keywordtype">void</font> *percentUserData)
+00272 {
+00273 listkey.ClearList();
+00274
+00275 <font class="keywordflow">if</font> ((fastSearch[0]) &amp;&amp; (fastSearch[1])) {
+00276
+00277 <font class="keywordflow">switch</font> (searchType) {
+00278 <font class="keywordflow">case</font> -2: {
+00279
+00280 <font class="keywordflow">if</font> ((flags &amp; REG_ICASE) != REG_ICASE) <font class="comment">// if haven't chosen to</font>
+00281 <font class="comment">// ignore case</font>
+00282 <font class="keywordflow">break</font>; <font class="comment">// can't handle fast case sensitive searches</font>
+00283
+00284 <font class="comment">// test to see if our scope for this search is bounded by a</font>
+00285 <font class="comment">// VerseKey</font>
+00286 <a class="code" href="class_verse_key.html">VerseKey</a> *testKeyType = 0;
+00287 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00288 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00289 <font class="preprocessor">#endif</font>
+00290 <font class="preprocessor"></font> testKeyType = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, ((scope)?scope:key));
+00291 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00292 <font class="preprocessor"></font> }
+00293 <font class="keywordflow">catch</font> ( ... ) {}
+00294 <font class="preprocessor">#endif</font>
+00295 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant we can't handle</font>
+00296 <font class="comment">// because of scope.</font>
+00297 <font class="comment">// In the future, add bool SWKey::isValid(const char *tryString);</font>
+00298 <font class="keywordflow">if</font> (!testKeyType)
+00299 <font class="keywordflow">break</font>;
+00300
+00301
+00302 <font class="comment">// check if we just want to see if search is supported.</font>
+00303 <font class="comment">// If we've gotten this far, then it is supported.</font>
+00304 <font class="keywordflow">if</font> (justCheckIfSupported) {
+00305 *justCheckIfSupported = <font class="keyword">true</font>;
+00306 <font class="keywordflow">return</font> listkey;
+00307 }
+00308
+00309 <a class="code" href="class_s_w_key.html">SWKey</a> saveKey = *testKeyType; <font class="comment">// save current place</font>
+00310
+00311 <font class="keywordtype">char</font> error = 0;
+00312 <font class="keywordtype">char</font> **words = 0;
+00313 <font class="keywordtype">char</font> *wordBuf = 0;
+00314 <font class="keywordtype">int</font> wordCount = 0;
+00315 <font class="keywordtype">long</font> start;
+00316 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00317 <font class="keywordtype">char</font> *idxbuf = 0;
+00318 <font class="keywordtype">char</font> *datbuf = 0;
+00319 list &lt;long&gt; indexes;
+00320 list &lt;long&gt; indexes2;
+00321 <a class="code" href="class_verse_key.html">VerseKey</a> vk;
+00322 vk = TOP;
+00323
+00324 (*percent)(10, percentUserData);
+00325
+00326 <font class="comment">// toupper our copy of search string</font>
+00327 stdstr(&amp;wordBuf, istr);
+00328 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 0; i &lt; strlen(wordBuf); i++)
+00329 wordBuf[i] = SW_toupper(wordBuf[i]);
+00330
+00331 <font class="comment">// get list of individual words</font>
+00332 words = (<font class="keywordtype">char</font> **)calloc(<font class="keyword">sizeof</font>(<font class="keywordtype">char</font> *), 10);
+00333 <font class="keywordtype">int</font> allocWords = 10;
+00334 words[wordCount] = strtok(wordBuf, <font class="stringliteral">" "</font>);
+00335 <font class="keywordflow">while</font> (words[wordCount]) {
+00336 wordCount++;
+00337 <font class="keywordflow">if</font> (wordCount == allocWords) {
+00338 allocWords+=10;
+00339 words = (<font class="keywordtype">char</font> **)realloc(words, <font class="keyword">sizeof</font>(<font class="keywordtype">char</font> *)*allocWords);
+00340 }
+00341 words[wordCount] = strtok(NULL, <font class="stringliteral">" "</font>);
+00342 }
+00343
+00344 (*percent)(20, percentUserData);
+00345
+00346 <font class="comment">// clear our result set</font>
+00347 indexes.erase(indexes.begin(), indexes.end());
+00348
+00349 <font class="comment">// search both old and new testament indexes</font>
+00350 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> j = 0; j &lt; 2; j++) {
+00351 <font class="comment">// iterate thru each word the user passed to us.</font>
+00352 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; wordCount; i++) {
+00353
+00354 <font class="comment">// clear this word's result set</font>
+00355 indexes2.erase(indexes2.begin(), indexes2.end());
+00356 error = 0;
+00357
+00358 <font class="comment">// iterate thru every word in the database that starts</font>
+00359 <font class="comment">// with our search word</font>
+00360 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> away = 0; !error; away++) {
+00361 idxbuf = 0;
+00362
+00363 <font class="comment">// find our word in the database and jump ahead _away_</font>
+00364 error = fastSearch[j]-&gt;findoffset(words[i], &amp;start, &amp;size, away);
+00365
+00366 <font class="comment">// get the word from the database</font>
+00367 fastSearch[j]-&gt;getidxbufdat(start, &amp;idxbuf);
+00368
+00369 <font class="comment">// check to see if it starts with our target word</font>
+00370 <font class="keywordflow">if</font> (strlen(idxbuf) &gt; strlen(words[i]))
+00371 idxbuf[strlen(words[i])] = 0;
+00372 <font class="comment">// else words[i][strlen(idxbuf)] = 0;</font>
+00373 <font class="keywordflow">if</font> (!strcmp(idxbuf, words[i])) {
+00374
+00375 <font class="comment">// get data for this word from database</font>
+00376 free(idxbuf);
+00377 idxbuf = (<font class="keywordtype">char</font> *)calloc(size+2, 1);
+00378 datbuf = (<font class="keywordtype">char</font> *)calloc(size+2, 1);
+00379 fastSearch[j]-&gt;gettext(start, size + 2, idxbuf, datbuf);
+00380
+00381 <font class="comment">// we know that the data consists of sizof(long)</font>
+00382 <font class="comment">// records each a valid module position that constains</font>
+00383 <font class="comment">// this word</font>
+00384 <font class="comment">//</font>
+00385 <font class="comment">// iterate thru each of these module positions</font>
+00386 <font class="keywordtype">long</font> *keyindex = (<font class="keywordtype">long</font> *)datbuf;
+00387 <font class="keywordflow">while</font> (keyindex &lt; (<font class="keywordtype">long</font> *)(datbuf + size - (strlen(idxbuf) + 1))) {
+00388 <font class="keywordflow">if</font> (i) { <font class="comment">// if we're not on our first word</font>
+00389
+00390 <font class="comment">// check to see if this word is already in the result set.</font>
+00391 <font class="comment">// This is our AND functionality</font>
+00392 <font class="keywordflow">if</font> (find(indexes.begin(), indexes.end(), *keyindex) != indexes.end())
+00393 <font class="comment">// add to new result set</font>
+00394 indexes2.push_back(*keyindex);
+00395 }
+00396 <font class="keywordflow">else</font> indexes2.push_back(*keyindex);
+00397 keyindex++;
+00398 }
+00399 free(datbuf);
+00400 }
+00401 <font class="keywordflow">else</font> error = 1; <font class="comment">// no more matches</font>
+00402 free(idxbuf);
+00403 }
+00404
+00405 <font class="comment">// make new result set final result set</font>
+00406 indexes = indexes2;
+00407
+00408 percent((<font class="keywordtype">char</font>)(20 + (<font class="keywordtype">float</font>)((j*wordCount)+i)/(wordCount * 2) * 78), percentUserData);
+00409 }
+00410
+00411 <font class="comment">// indexes contains our good verses, lets return them in a listkey</font>
+00412 indexes.sort();
+00413
+00414 <font class="comment">// iterate thru each good module position that meets the search</font>
+00415 <font class="keywordflow">for</font> (list &lt;long&gt;::iterator it = indexes.begin(); it != indexes.end(); it++) {
+00416
+00417 <font class="comment">// set a temporary verse key to this module position</font>
+00418 vk.<a class="code" href="class_verse_key.html#a22">Testament</a>(j+1);
+00419 vk.<a class="code" href="class_s_w_key.html#a6">Error</a>();
+00420 vk.<a class="code" href="class_verse_key.html#a34">Index</a>(*it);
+00421
+00422 <font class="comment">// check scope</font>
+00423 <font class="comment">// Try to set our scope key to this verse key</font>
+00424 <font class="keywordflow">if</font> (scope) {
+00425 *testKeyType = vk;
+00426
+00427 <font class="comment">// check to see if it set ok and if so, add to our return list</font>
+00428 <font class="keywordflow">if</font> (*testKeyType == vk)
+00429 listkey &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) vk;
+00430 }
+00431 <font class="keywordflow">else</font> listkey &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font>*) vk;
+00432 }
+00433 }
+00434 (*percent)(98, percentUserData);
+00435
+00436 free(words);
+00437 free(wordBuf);
+00438
+00439 *testKeyType = saveKey; <font class="comment">// set current place back to original</font>
+00440
+00441 listkey = TOP;
+00442 (*percent)(100, percentUserData);
+00443 <font class="keywordflow">return</font> listkey;
+00444 }
+00445
+00446 <font class="keywordflow">default</font>:
+00447 <font class="keywordflow">break</font>;
+00448 }
+00449 }
+00450
+00451 <font class="comment">// check if we just want to see if search is supported</font>
+00452 <font class="keywordflow">if</font> (justCheckIfSupported) {
+00453 *justCheckIfSupported = <font class="keyword">false</font>;
+00454 <font class="keywordflow">return</font> listkey;
+00455 }
+00456
+00457 <font class="comment">// if we don't support this search, fall back to base class</font>
+00458 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a22">SWModule::Search</a>(istr, searchType, flags, scope, justCheckIfSupported, percent, percentUserData);
+00459 }
+00460
+00461 <font class="preprocessor">#ifdef _MSC_VER</font>
+00462 <font class="preprocessor"></font><a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawText::operator =(SW_POSITION p) {
+00463 <font class="preprocessor">#else</font>
+00464 <font class="preprocessor"></font>RawText &amp;RawText::operator =(SW_POSITION p) {
+00465 <font class="preprocessor">#endif</font>
+00466 <font class="preprocessor"></font> <a class="code" href="class_s_w_module.html#a40">SWModule::operator =</a>(p);
+00467 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00468 }
+00469
+00470 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawText::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00471 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00472 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00473 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00474 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00475 <font class="preprocessor">#endif</font>
+00476 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00477 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00478 <font class="preprocessor"></font> }
+00479 <font class="keywordflow">catch</font> ( ... ) {}
+00480 <font class="preprocessor">#endif</font>
+00481 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00482 <font class="keywordflow">if</font> (!key)
+00483 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00484
+00485 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), inbuf, len);
+00486
+00487 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00488 <font class="keyword">delete</font> key;
+00489
+00490 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00491 }
+00492
+00493 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawText::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00494 <font class="keywordflow">return</font> setentry(inbuf, 0);
+00495 }
+00496
+00497
+00498 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawText::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00499 <a class="code" href="class_verse_key.html">VerseKey</a> *destkey = 0;
+00500 <font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *srckey = 0;
+00501 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00502 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00503 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00504 <font class="preprocessor">#endif</font>
+00505 <font class="preprocessor"></font> destkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00506 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00507 <font class="preprocessor"></font> }
+00508 <font class="keywordflow">catch</font> ( ... ) {}
+00509 <font class="preprocessor">#endif</font>
+00510 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00511 <font class="keywordflow">if</font> (!destkey)
+00512 destkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00513
+00514 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00515 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00516 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00517 <font class="preprocessor">#endif</font>
+00518 <font class="preprocessor"></font> srckey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, inkey);
+00519 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00520 <font class="preprocessor"></font> }
+00521 <font class="keywordflow">catch</font> ( ... ) {}
+00522 <font class="preprocessor">#endif</font>
+00523 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00524 <font class="keywordflow">if</font> (!srckey)
+00525 srckey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(inkey);
+00526
+00527 linkentry(destkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), destkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), srckey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>());
+00528
+00529 <font class="keywordflow">if</font> (this-&gt;key != destkey) <font class="comment">// free our key if we created a VerseKey</font>
+00530 <font class="keyword">delete</font> destkey;
+00531
+00532 <font class="keywordflow">if</font> (inkey != srckey) <font class="comment">// free our key if we created a VerseKey</font>
+00533 <font class="keyword">delete</font> srckey;
+00534
+00535 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00536 }
+00537
+00538
+00539 <font class="comment">/******************************************************************************</font>
+00540 <font class="comment"> * RawText::deleteEntry - deletes this entry</font>
+00541 <font class="comment"> *</font>
+00542 <font class="comment"> * RET: *this</font>
+00543 <font class="comment"> */</font>
+00544
+00545 <font class="keywordtype">void</font> RawText::deleteEntry() {
+00546
+00547 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00548
+00549 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00550 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00551 <font class="preprocessor">#endif</font>
+00552 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00553 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00554 <font class="preprocessor"></font> }
+00555 <font class="keywordflow">catch</font> ( ... ) {}
+00556 <font class="preprocessor">#endif</font>
+00557 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00558 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
+00559
+00560 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), <font class="stringliteral">""</font>);
+00561
+00562 <font class="keywordflow">if</font> (key != this-&gt;key)
+00563 <font class="keyword">delete</font> key;
+00564 }
+00565
+00566 <font class="comment">/******************************************************************************</font>
+00567 <font class="comment"> * RawText::operator += - Increments module key a number of entries</font>
+00568 <font class="comment"> *</font>
+00569 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00570 <font class="comment"> *</font>
+00571 <font class="comment"> * RET: *this</font>
+00572 <font class="comment"> */</font>
+00573
+00574 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawText::operator +=(<font class="keywordtype">int</font> increment)
+00575 {
+00576 <font class="keywordtype">long</font> start;
+00577 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00578 <a class="code" href="class_verse_key.html">VerseKey</a> *tmpkey = 0;
+00579
+00580 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00581 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00582 <font class="preprocessor">#endif</font>
+00583 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00584 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00585 <font class="preprocessor"></font> }
+00586 <font class="keywordflow">catch</font> ( ... ) {}
+00587 <font class="preprocessor">#endif</font>
+00588 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00589 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(key);
+00590
+00591 findoffset(tmpkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), tmpkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00592
+00593 <a class="code" href="class_s_w_key.html">SWKey</a> lastgood = *tmpkey;
+00594 <font class="keywordflow">while</font> (increment) {
+00595 <font class="keywordtype">long</font> laststart = start;
+00596 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> lastsize = size;
+00597 <a class="code" href="class_s_w_key.html">SWKey</a> lasttry = *tmpkey;
+00598 (increment &gt; 0) ? (*key)++ : (*key)--;
+00599 <font class="keywordflow">if</font> (tmpkey != key)
+00600 <font class="keyword">delete</font> tmpkey;
+00601 tmpkey = 0;
+00602 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00603 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00604 <font class="preprocessor">#endif</font>
+00605 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00606 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00607 <font class="preprocessor"></font> }
+00608 <font class="keywordflow">catch</font> ( ... ) {}
+00609 <font class="preprocessor">#endif</font>
+00610 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00611 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(key);
+00612
+00613 <font class="keywordflow">if</font> ((error = key-&gt;Error())) {
+00614 *key = lastgood;
+00615 <font class="keywordflow">break</font>;
+00616 }
+00617 <font class="keywordtype">long</font> index = tmpkey-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00618 findoffset(tmpkey-&gt;Testament(), index, &amp;start, &amp;size);
+00619 <font class="keywordflow">if</font> ((((laststart != start) || (lastsize != size))||(!skipConsecutiveLinks)) &amp;&amp; (start &gt;= 0) &amp;&amp; (size)) {
+00620 increment += (increment &lt; 0) ? 1 : -1;
+00621 lastgood = *tmpkey;
+00622 }
+00623 }
+00624 error = (error) ? KEYERR_OUTOFBOUNDS : 0;
+00625
+00626 <font class="keywordflow">if</font> (tmpkey != key)
+00627 <font class="keyword">delete</font> tmpkey;
+00628
+00629 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00630 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawtext_8h-source.html b/doc/api-documentation/html/rawtext_8h-source.html
new file mode 100644
index 0000000..042fe1b
--- /dev/null
+++ b/doc/api-documentation/html/rawtext_8h-source.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawtext.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawtext.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawtext.h - code for class 'RawText'- a module that reads raw text files:</font>
+00003 <font class="comment"> * ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: rawtext_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef RAWTEXT_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define RAWTEXT_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;rawstr.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swtext.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT RawText:<font class="keyword">public</font> <a class="code" href="class_s_w_text.html">SWText</a>, <font class="keyword">public</font> RawVerse {
+00033 RawStr *fastSearch[2];
+00034
+00035 <font class="keyword">public</font>:
+00036
+00037
+00038 RawText (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00039 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00040 <font class="keyword">virtual</font> ~ RawText ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a> ();
+00042 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a37">operator += </a>(<font class="keywordtype">int</font> increment);
+00043 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a36">operator -= </a>(<font class="keywordtype">int</font> decrement) { <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_s_w_module.html#a37">operator += </a>(-decrement); }
+00044 <font class="keyword">virtual</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> createSearchFramework ();
+00045 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> hasSearchFramework () { <font class="keywordflow">return</font> <font class="keyword">true</font>; }
+00046 <font class="preprocessor">#ifdef _MSC_VER</font>
+00047 <font class="preprocessor"></font> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a40">operator = </a>(SW_POSITION);
+00048 <font class="preprocessor">#else</font>
+00049 <font class="preprocessor"></font> <font class="keyword">virtual</font> RawText &amp; <a class="code" href="class_s_w_module.html#a40">operator = </a>(SW_POSITION);
+00050 <font class="preprocessor">#endif</font>
+00051 <font class="preprocessor"></font> <font class="keyword">virtual</font> <a class="code" href="class_list_key.html">ListKey</a> &amp; <a class="code" href="class_s_w_module.html#a22">Search</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *istr, <font class="keywordtype">int</font> searchType = 0, <font class="keywordtype">int</font> flags = 0, <a class="code" href="class_s_w_key.html">SWKey</a> * scope = 0, <font class="keywordtype">bool</font> * justCheckIfSupported = 0, <font class="keywordtype">void</font> (*percent) (<font class="keywordtype">char</font>, <font class="keywordtype">void</font> *) = &amp;<a class="code" href="class_s_w_module.html#d0">SWModule::nullPercent</a>, <font class="keywordtype">void</font> *percentUserData = 0);
+00052
+00053 <font class="comment">// write interface ----------------------------</font>
+00054 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfp[0]-&gt;getFd() &gt; 0) &amp;&amp; ((idxfp[0]-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00055 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *path) { <font class="keywordflow">return</font> RawVerse::createModule (path); }
+00056 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00057 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00058 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00059 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00060 <font class="comment">// end write interface ------------------------</font>
+00061 };
+00062
+00063
+00064 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawverse_8cpp-source.html b/doc/api-documentation/html/rawverse_8cpp-source.html
new file mode 100644
index 0000000..f4ea5ae
--- /dev/null
+++ b/doc/api-documentation/html/rawverse_8cpp-source.html
@@ -0,0 +1,361 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawverse.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawverse.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawverse.cpp - code for class 'RawVerse'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class VerseKey</font>
+00006 <font class="comment"> */</font>
+00007
+00008
+00009 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00013
+00014 <font class="preprocessor">#ifndef __GNUC__</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00016 <font class="preprocessor">#include &lt;sys/stat.h&gt;</font>
+00017 <font class="preprocessor">#else</font>
+00018 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00019 <font class="preprocessor">#endif</font>
+00020 <font class="preprocessor"></font>
+00021 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00023 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;sysdata.h&gt;</font>
+00026
+00027 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00028 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00029 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00030 <font class="preprocessor"></font>
+00031
+00032 <font class="comment">/******************************************************************************</font>
+00033 <font class="comment"> * RawVerse Statics</font>
+00034 <font class="comment"> */</font>
+00035
+00036 <font class="keywordtype">int</font> RawVerse::instance = 0;
+00037
+00038
+00039 <font class="comment">/******************************************************************************</font>
+00040 <font class="comment"> * RawVerse Constructor - Initializes data for instance of RawVerse</font>
+00041 <font class="comment"> *</font>
+00042 <font class="comment"> * ENT: ipath - path of the directory where data and index files are located.</font>
+00043 <font class="comment"> * be sure to include the trailing separator (e.g. '/' or '\')</font>
+00044 <font class="comment"> * (e.g. 'modules/texts/rawtext/webster/')</font>
+00045 <font class="comment"> */</font>
+00046
+00047 RawVerse::RawVerse(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode)
+00048 {
+00049 <font class="keywordtype">char</font> *buf;
+00050
+00051 nl = <font class="charliteral">'\n'</font>;
+00052 path = 0;
+00053 stdstr(&amp;path, ipath);
+00054 buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(path) + 80 ];
+00055 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00056 path[strlen(path)-1] = 0;
+00057
+00058 <font class="keywordflow">if</font> (fileMode == -1) { <font class="comment">// try read/write if possible</font>
+00059 fileMode = O_RDWR;
+00060 }
+00061
+00062 sprintf(buf, <font class="stringliteral">"%s/ot.vss"</font>, path);
+00063 idxfp[0] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00064
+00065 sprintf(buf, <font class="stringliteral">"%s/nt.vss"</font>, path);
+00066 idxfp[1] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00067
+00068 sprintf(buf, <font class="stringliteral">"%s/ot"</font>, path);
+00069 textfp[0] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00070
+00071 sprintf(buf, <font class="stringliteral">"%s/nt"</font>, path);
+00072 textfp[1] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00073
+00074 <font class="keyword">delete</font> [] buf;
+00075 instance++;
+00076 }
+00077
+00078
+00079 <font class="comment">/******************************************************************************</font>
+00080 <font class="comment"> * RawVerse Destructor - Cleans up instance of RawVerse</font>
+00081 <font class="comment"> */</font>
+00082
+00083 RawVerse::~RawVerse()
+00084 {
+00085 <font class="keywordtype">int</font> loop1;
+00086
+00087 <font class="keywordflow">if</font> (path)
+00088 <font class="keyword">delete</font> [] path;
+00089
+00090 --instance;
+00091
+00092 <font class="keywordflow">for</font> (loop1 = 0; loop1 &lt; 2; loop1++) {
+00093 FileMgr::systemFileMgr.close(idxfp[loop1]);
+00094 FileMgr::systemFileMgr.close(textfp[loop1]);
+00095 }
+00096 }
+00097
+00098
+00099 <font class="comment">/******************************************************************************</font>
+00100 <font class="comment"> * RawVerse::findoffset - Finds the offset of the key verse from the indexes</font>
+00101 <font class="comment"> *</font>
+00102 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00103 <font class="comment"> * idxoff - offset into .vss</font>
+00104 <font class="comment"> * start - address to store the starting offset</font>
+00105 <font class="comment"> * size - address to store the size of the entry</font>
+00106 <font class="comment"> */</font>
+00107
+00108 <font class="keywordtype">void</font> RawVerse::findoffset(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keywordtype">long</font> *start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *size) {
+00109 idxoff *= 6;
+00110 <font class="keywordflow">if</font> (!testmt)
+00111 testmt = ((idxfp[1]) ? 1:2);
+00112
+00113 <font class="keywordflow">if</font> (idxfp[testmt-1]-&gt;getFd() &gt;= 0) {
+00114 lseek(idxfp[testmt-1]-&gt;getFd(), idxoff, SEEK_SET);
+00115 read(idxfp[testmt-1]-&gt;getFd(), start, 4);
+00116 <font class="keywordtype">long</font> len = read(idxfp[testmt-1]-&gt;getFd(), size, 2); <font class="comment">// read size</font>
+00117
+00118 *start = swordtoarch32(*start);
+00119 *size = swordtoarch16(*size);
+00120
+00121 <font class="keywordflow">if</font> (len &lt; 2) {
+00122 *size = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)((*start) ? (lseek(textfp[testmt-1]-&gt;getFd(), 0, SEEK_END) - (long)*start) : 0); <font class="comment">// if for some reason we get an error reading size, make size to end of file</font>
+00123 }
+00124 }
+00125 <font class="keywordflow">else</font> {
+00126 *start = 0;
+00127 *size = 0;
+00128 }
+00129 }
+00130
+00131
+00132 <font class="comment">/******************************************************************************</font>
+00133 <font class="comment"> * RawVerse::preptext - Prepares the text before returning it to external</font>
+00134 <font class="comment"> * objects</font>
+00135 <font class="comment"> *</font>
+00136 <font class="comment"> * ENT: buf - buffer where text is stored and where to store the prep'd</font>
+00137 <font class="comment"> * text.</font>
+00138 <font class="comment"> */</font>
+00139
+00140 <font class="keywordtype">void</font> RawVerse::preptext(<font class="keywordtype">char</font> *buf)
+00141 {
+00142 <font class="keywordtype">char</font> *to, *from, space = 0, cr = 0, realdata = 0, nlcnt = 0;
+00143
+00144 <font class="keywordflow">for</font> (to = from = buf; *from; from++) {
+00145 <font class="keywordflow">switch</font> (*from) {
+00146 <font class="keywordflow">case</font> 10:
+00147 <font class="keywordflow">if</font> (!realdata)
+00148 <font class="keywordflow">continue</font>;
+00149 space = (cr) ? 0 : 1;
+00150 cr = 0;
+00151 nlcnt++;
+00152 <font class="keywordflow">if</font> (nlcnt &gt; 1) {
+00153 <font class="comment">// *to++ = nl;</font>
+00154 *to++ = nl;
+00155 <font class="comment">// nlcnt = 0;</font>
+00156 }
+00157 <font class="keywordflow">continue</font>;
+00158 <font class="keywordflow">case</font> 13:
+00159 <font class="keywordflow">if</font> (!realdata)
+00160 <font class="keywordflow">continue</font>;
+00161 *to++ = nl;
+00162 space = 0;
+00163 cr = 1;
+00164 <font class="keywordflow">continue</font>;
+00165 }
+00166 realdata = 1;
+00167 nlcnt = 0;
+00168 <font class="keywordflow">if</font> (space) {
+00169 space = 0;
+00170 <font class="keywordflow">if</font> (*from != <font class="charliteral">' '</font>) {
+00171 *to++ = <font class="charliteral">' '</font>;
+00172 from--;
+00173 <font class="keywordflow">continue</font>;
+00174 }
+00175 }
+00176 *to++ = *from;
+00177 }
+00178 *to = 0;
+00179
+00180 <font class="keywordflow">while</font> (to &gt; (buf+1)) { <font class="comment">// remove trailing excess</font>
+00181 to--;
+00182 <font class="keywordflow">if</font> ((*to == 10) || (*to == <font class="charliteral">' '</font>))
+00183 *to = 0;
+00184 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00185 }
+00186 }
+00187
+00188
+00189 <font class="comment">/******************************************************************************</font>
+00190 <font class="comment"> * RawVerse::gettext - gets text at a given offset</font>
+00191 <font class="comment"> *</font>
+00192 <font class="comment"> * ENT: testmt - testament file to search in (0 - Old; 1 - New)</font>
+00193 <font class="comment"> * start - starting offset where the text is located in the file</font>
+00194 <font class="comment"> * size - size of text entry + 2 (null)(null)</font>
+00195 <font class="comment"> * buf - buffer to store text</font>
+00196 <font class="comment"> *</font>
+00197 <font class="comment"> */</font>
+00198
+00199 <font class="keywordtype">void</font> RawVerse::gettext(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size, <font class="keywordtype">char</font> *buf) {
+00200 memset(buf, 0, size+1);
+00201 <font class="keywordflow">if</font> (!testmt)
+00202 testmt = ((idxfp[1]) ? 1:2);
+00203 <font class="keywordflow">if</font> (size) {
+00204 <font class="keywordflow">if</font> (textfp[testmt-1]-&gt;getFd() &gt;= 0) {
+00205 lseek(textfp[testmt-1]-&gt;getFd(), start, SEEK_SET);
+00206 read(textfp[testmt-1]-&gt;getFd(), buf, (<font class="keywordtype">int</font>)size - 2);
+00207 }
+00208 }
+00209 }
+00210
+00211
+00212 <font class="comment">/******************************************************************************</font>
+00213 <font class="comment"> * RawVerse::settext - Sets text for current offset</font>
+00214 <font class="comment"> *</font>
+00215 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00216 <font class="comment"> * idxoff - offset into .vss</font>
+00217 <font class="comment"> * buf - buffer to store</font>
+00218 <font class="comment"> * len - length of buffer (0 - null terminated)</font>
+00219 <font class="comment"> */</font>
+00220
+00221 <font class="keywordtype">void</font> RawVerse::settext(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len)
+00222 {
+00223 <font class="keywordtype">long</font> start, outstart;
+00224 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00225 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> outsize;
+00226 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> nl[] = {13, 10};
+00227
+00228 idxoff *= 6;
+00229 <font class="keywordflow">if</font> (!testmt)
+00230 testmt = ((idxfp[1]) ? 1:2);
+00231
+00232 size = outsize = len ? len : strlen(buf);
+00233
+00234 start = outstart = lseek(textfp[testmt-1]-&gt;getFd(), 0, SEEK_END);
+00235 lseek(idxfp[testmt-1]-&gt;getFd(), idxoff, SEEK_SET);
+00236
+00237 <font class="keywordflow">if</font> (size) {
+00238 lseek(textfp[testmt-1]-&gt;getFd(), start, SEEK_SET);
+00239 write(textfp[testmt-1]-&gt;getFd(), buf, (<font class="keywordtype">int</font>)size);
+00240
+00241 <font class="comment">// add a new line to make data file easier to read in an editor</font>
+00242 write(textfp[testmt-1]-&gt;getFd(), &amp;nl, 2);
+00243 }
+00244 <font class="keywordflow">else</font> {
+00245 start = 0;
+00246 }
+00247
+00248 outstart = archtosword32(start);
+00249 outsize = archtosword16(size);
+00250
+00251 write(idxfp[testmt-1]-&gt;getFd(), &amp;outstart, 4);
+00252 write(idxfp[testmt-1]-&gt;getFd(), &amp;outsize, 2);
+00253
+00254
+00255 }
+00256
+00257
+00258 <font class="comment">/******************************************************************************</font>
+00259 <font class="comment"> * RawVerse::linkentry - links one entry to another</font>
+00260 <font class="comment"> *</font>
+00261 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00262 <font class="comment"> * destidxoff - dest offset into .vss</font>
+00263 <font class="comment"> * srcidxoff - source offset into .vss</font>
+00264 <font class="comment"> */</font>
+00265
+00266 <font class="keywordtype">void</font> RawVerse::linkentry(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> destidxoff, <font class="keywordtype">long</font> srcidxoff) {
+00267 <font class="keywordtype">long</font> start;
+00268 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00269
+00270 destidxoff *= 6;
+00271 srcidxoff *= 6;
+00272
+00273 <font class="keywordflow">if</font> (!testmt)
+00274 testmt = ((idxfp[1]) ? 1:2);
+00275
+00276 <font class="comment">// get source</font>
+00277 lseek(idxfp[testmt-1]-&gt;getFd(), srcidxoff, SEEK_SET);
+00278 read(idxfp[testmt-1]-&gt;getFd(), &amp;start, 4);
+00279 read(idxfp[testmt-1]-&gt;getFd(), &amp;size, 2);
+00280
+00281 <font class="comment">// write dest</font>
+00282 lseek(idxfp[testmt-1]-&gt;getFd(), destidxoff, SEEK_SET);
+00283 write(idxfp[testmt-1]-&gt;getFd(), &amp;start, 4);
+00284 write(idxfp[testmt-1]-&gt;getFd(), &amp;size, 2);
+00285 }
+00286
+00287
+00288 <font class="comment">/******************************************************************************</font>
+00289 <font class="comment"> * RawVerse::CreateModule - Creates new module files</font>
+00290 <font class="comment"> *</font>
+00291 <font class="comment"> * ENT: path - directory to store module files</font>
+00292 <font class="comment"> * RET: error status</font>
+00293 <font class="comment"> */</font>
+00294
+00295 <font class="keywordtype">char</font> RawVerse::createModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath)
+00296 {
+00297 <font class="keywordtype">char</font> *path = 0;
+00298 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00299 FileDesc *fd, *fd2;
+00300
+00301 stdstr(&amp;path, ipath);
+00302
+00303 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00304 path[strlen(path)-1] = 0;
+00305
+00306 sprintf(buf, <font class="stringliteral">"%s/ot"</font>, path);
+00307 unlink(buf);
+00308 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00309 fd-&gt;getFd();
+00310 FileMgr::systemFileMgr.close(fd);
+00311
+00312 sprintf(buf, <font class="stringliteral">"%s/nt"</font>, path);
+00313 unlink(buf);
+00314 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00315 fd-&gt;getFd();
+00316 FileMgr::systemFileMgr.close(fd);
+00317
+00318 sprintf(buf, <font class="stringliteral">"%s/ot.vss"</font>, path);
+00319 unlink(buf);
+00320 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00321 fd-&gt;getFd();
+00322
+00323 sprintf(buf, <font class="stringliteral">"%s/nt.vss"</font>, path);
+00324 unlink(buf);
+00325 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00326 fd2-&gt;getFd();
+00327
+00328 <a class="code" href="class_verse_key.html">VerseKey</a> vk;
+00329 vk.<a class="code" href="class_verse_key.html#a32">Headings</a>(1);
+00330 <font class="keywordtype">long</font> offset = 0;
+00331 <font class="keywordtype">short</font> size = 0;
+00332 <font class="keywordflow">for</font> (vk = TOP; !vk.<a class="code" href="class_s_w_key.html#a6">Error</a>(); vk++) {
+00333 write((vk.<a class="code" href="class_verse_key.html#a22">Testament</a>() == 1) ? fd-&gt;getFd() : fd2-&gt;getFd(), &amp;offset, 4);
+00334 write((vk.<a class="code" href="class_verse_key.html#a22">Testament</a>() == 1) ? fd-&gt;getFd() : fd2-&gt;getFd(), &amp;size, 2);
+00335 }
+00336
+00337 FileMgr::systemFileMgr.close(fd);
+00338 FileMgr::systemFileMgr.close(fd2);
+00339
+00340 <font class="keyword">delete</font> [] path;
+00341 <font class="comment">/*</font>
+00342 <font class="comment"> RawVerse rv(path);</font>
+00343 <font class="comment"> VerseKey mykey("Rev 22:21");</font>
+00344 <font class="comment">*/</font>
+00345
+00346 <font class="keywordflow">return</font> 0;
+00347 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rawverse_8h-source.html b/doc/api-documentation/html/rawverse_8h-source.html
new file mode 100644
index 0000000..d247400
--- /dev/null
+++ b/doc/api-documentation/html/rawverse_8h-source.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawverse.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawverse.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawverse.h - code for class 'RawVerse'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class VerseKey</font>
+00006 <font class="comment"> */</font>
+00007
+00008 <font class="preprocessor">#ifndef RAWVERSE_H</font>
+00009 <font class="preprocessor"></font><font class="preprocessor">#define RAWVERSE_H</font>
+00010 <font class="preprocessor"></font>
+00011 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00013
+00014 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00015
+00016 <font class="keyword">class </font>SWDLLEXPORT RawVerse {
+00017 <font class="keyword">static</font> <font class="keywordtype">int</font> instance; <font class="comment">// number of instantiated RawVerse objects or derivitives</font>
+00018 <font class="keyword">protected</font>:
+00019 FileDesc *idxfp[2];
+00020 FileDesc *textfp[2];
+00021
+00022 <font class="keywordtype">char</font> *path;
+00023 <font class="keywordtype">void</font> preptext (<font class="keywordtype">char</font> *buf);
+00024 <font class="keywordtype">void</font> settext (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len = 0);
+00025 <font class="keywordtype">void</font> linkentry (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> destidxoff, <font class="keywordtype">long</font> srcidxoff);
+00026
+00027 <font class="keyword">public</font>:
+00028 <font class="keywordtype">char</font> nl;
+00029 RawVerse (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode = -1);
+00030 <font class="keyword">virtual</font> ~ RawVerse ();
+00031 <font class="keywordtype">void</font> findoffset (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keywordtype">long</font> *start,
+00032 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *end);
+00033 <font class="keywordtype">void</font> gettext (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size, <font class="keywordtype">char</font> *buf);
+00034 <font class="keyword">static</font> <font class="keywordtype">char</font> createModule (<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
+00035 };
+00036
+00037
+00038 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/regex_8h-source.html b/doc/api-documentation/html/regex_8h-source.html
new file mode 100644
index 0000000..18a7b73
--- /dev/null
+++ b/doc/api-documentation/html/regex_8h-source.html
@@ -0,0 +1,559 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>regex.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>regex.h</h1><div class="fragment"><pre>00001 <font class="comment">/* Definitions for data structures and routines for the regular</font>
+00002 <font class="comment"> expression library, version 0.12.</font>
+00003 <font class="comment"> Copyright (C) 1985,89,90,91,92,93,95,96,97 Free Software Foundation, Inc.</font>
+00004 <font class="comment"></font>
+00005 <font class="comment"> the C library, however. The master source lives in /gd/gnu/lib.</font>
+00006 <font class="comment"></font>
+00007 <font class="comment">NOTE: The canonical source of this file is maintained with the </font>
+00008 <font class="comment">GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.</font>
+00009 <font class="comment"></font>
+00010 <font class="comment">This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment">under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment">Free Software Foundation; either version 2, or (at your option) any</font>
+00013 <font class="comment">later version.</font>
+00014 <font class="comment"></font>
+00015 <font class="comment">This program is distributed in the hope that it will be useful,</font>
+00016 <font class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font>
+00018 <font class="comment">GNU General Public License for more details.</font>
+00019 <font class="comment"></font>
+00020 <font class="comment">You should have received a copy of the GNU General Public License</font>
+00021 <font class="comment">along with this program; if not, write to the Free Software Foundation, </font>
+00022 <font class="comment">Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */</font>
+00023
+00024 <font class="preprocessor">#ifndef _REGEX_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define _REGEX_H 1</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="comment">/* Allow the use in C++ code. */</font>
+00028 <font class="preprocessor">#ifdef __cplusplus</font>
+00029 <font class="preprocessor"></font><font class="keyword">extern</font> <font class="stringliteral">"C"</font>
+00030 {
+00031 <font class="preprocessor">#endif</font>
+00032 <font class="preprocessor"></font>
+00033 <font class="comment">/* POSIX says that &lt;sys/types.h&gt; must be included (by the caller) before</font>
+00034 <font class="comment"> &lt;regex.h&gt;. */</font>
+00035
+00036 <font class="preprocessor">#if !defined (_POSIX_C_SOURCE) &amp;&amp; !defined (_POSIX_SOURCE) &amp;&amp; defined (VMS)</font>
+00037 <font class="preprocessor"></font><font class="comment">/* VMS doesn't have `size_t' in &lt;sys/types.h&gt;, even though POSIX says it</font>
+00038 <font class="comment"> should be there. */</font>
+00039 <font class="preprocessor">#include &lt;stddef.h&gt;</font>
+00040 <font class="preprocessor">#endif</font>
+00041 <font class="preprocessor"></font>
+00042 <font class="comment">/* The following two types have to be signed and unsigned integer type</font>
+00043 <font class="comment"> wide enough to hold a value of a pointer. For most ANSI compilers</font>
+00044 <font class="comment"> ptrdiff_t and size_t should be likely OK. Still size of these two</font>
+00045 <font class="comment"> types is 2 for Microsoft C. Ugh... */</font>
+00046 <font class="keyword">typedef</font> <font class="keywordtype">long</font> <font class="keywordtype">int</font> s_reg_t;
+00047 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> <font class="keywordtype">int</font> active_reg_t;
+00048
+00049 <font class="comment">/* The following bits are used to determine the regexp syntax we</font>
+00050 <font class="comment"> recognize. The set/not-set meanings are chosen so that Emacs syntax</font>
+00051 <font class="comment"> remains the value 0. The bits are given in alphabetical order, and</font>
+00052 <font class="comment"> the definitions shifted by one from the previous bit; thus, when we</font>
+00053 <font class="comment"> add or remove a bit, only one other definition need change. */</font>
+00054 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> <font class="keywordtype">int</font> reg_syntax_t;
+00055
+00056 <font class="comment">/* If this bit is not set, then \ inside a bracket expression is literal.</font>
+00057 <font class="comment"> If set, then such a \ quotes the following character. */</font>
+00058 <font class="preprocessor">#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)</font>
+00059 <font class="preprocessor"></font>
+00060 <font class="comment">/* If this bit is not set, then + and ? are operators, and \+ and \? are</font>
+00061 <font class="comment"> literals.</font>
+00062 <font class="comment"> If set, then \+ and \? are operators and + and ? are literals. */</font>
+00063 <font class="preprocessor">#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS &lt;&lt; 1)</font>
+00064 <font class="preprocessor"></font>
+00065 <font class="comment">/* If this bit is set, then character classes are supported. They are:</font>
+00066 <font class="comment"> [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],</font>
+00067 <font class="comment"> [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].</font>
+00068 <font class="comment"> If not set, then character classes are not supported. */</font>
+00069 <font class="preprocessor">#define RE_CHAR_CLASSES (RE_BK_PLUS_QM &lt;&lt; 1)</font>
+00070 <font class="preprocessor"></font>
+00071 <font class="comment">/* If this bit is set, then ^ and $ are always anchors (outside bracket</font>
+00072 <font class="comment"> expressions, of course).</font>
+00073 <font class="comment"> If this bit is not set, then it depends:</font>
+00074 <font class="comment"> ^ is an anchor if it is at the beginning of a regular</font>
+00075 <font class="comment"> expression or after an open-group or an alternation operator;</font>
+00076 <font class="comment"> $ is an anchor if it is at the end of a regular expression, or</font>
+00077 <font class="comment"> before a close-group or an alternation operator.</font>
+00078 <font class="comment"></font>
+00079 <font class="comment"> This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because</font>
+00080 <font class="comment"> POSIX draft 11.2 says that * etc. in leading positions is undefined.</font>
+00081 <font class="comment"> We already implemented a previous draft which made those constructs</font>
+00082 <font class="comment"> invalid, though, so we haven't changed the code back. */</font>
+00083 <font class="preprocessor">#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES &lt;&lt; 1)</font>
+00084 <font class="preprocessor"></font>
+00085 <font class="comment">/* If this bit is set, then special characters are always special</font>
+00086 <font class="comment"> regardless of where they are in the pattern.</font>
+00087 <font class="comment"> If this bit is not set, then special characters are special only in</font>
+00088 <font class="comment"> some contexts; otherwise they are ordinary. Specifically,</font>
+00089 <font class="comment"> * + ? and intervals are only special when not after the beginning,</font>
+00090 <font class="comment"> open-group, or alternation operator. */</font>
+00091 <font class="preprocessor">#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS &lt;&lt; 1)</font>
+00092 <font class="preprocessor"></font>
+00093 <font class="comment">/* If this bit is set, then *, +, ?, and { cannot be first in an re or</font>
+00094 <font class="comment"> immediately after an alternation or begin-group operator. */</font>
+00095 <font class="preprocessor">#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS &lt;&lt; 1)</font>
+00096 <font class="preprocessor"></font>
+00097 <font class="comment">/* If this bit is set, then . matches newline.</font>
+00098 <font class="comment"> If not set, then it doesn't. */</font>
+00099 <font class="preprocessor">#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS &lt;&lt; 1)</font>
+00100 <font class="preprocessor"></font>
+00101 <font class="comment">/* If this bit is set, then . doesn't match NUL.</font>
+00102 <font class="comment"> If not set, then it does. */</font>
+00103 <font class="preprocessor">#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE &lt;&lt; 1)</font>
+00104 <font class="preprocessor"></font>
+00105 <font class="comment">/* If this bit is set, nonmatching lists [^...] do not match newline.</font>
+00106 <font class="comment"> If not set, they do. */</font>
+00107 <font class="preprocessor">#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL &lt;&lt; 1)</font>
+00108 <font class="preprocessor"></font>
+00109 <font class="comment">/* If this bit is set, either \{...\} or {...} defines an</font>
+00110 <font class="comment"> interval, depending on RE_NO_BK_BRACES.</font>
+00111 <font class="comment"> If not set, \{, \}, {, and } are literals. */</font>
+00112 <font class="preprocessor">#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE &lt;&lt; 1)</font>
+00113 <font class="preprocessor"></font>
+00114 <font class="comment">/* If this bit is set, +, ? and | aren't recognized as operators.</font>
+00115 <font class="comment"> If not set, they are. */</font>
+00116 <font class="preprocessor">#define RE_LIMITED_OPS (RE_INTERVALS &lt;&lt; 1)</font>
+00117 <font class="preprocessor"></font>
+00118 <font class="comment">/* If this bit is set, newline is an alternation operator.</font>
+00119 <font class="comment"> If not set, newline is literal. */</font>
+00120 <font class="preprocessor">#define RE_NEWLINE_ALT (RE_LIMITED_OPS &lt;&lt; 1)</font>
+00121 <font class="preprocessor"></font>
+00122 <font class="comment">/* If this bit is set, then `{...}' defines an interval, and \{ and \}</font>
+00123 <font class="comment"> are literals.</font>
+00124 <font class="comment"> If not set, then `\{...\}' defines an interval. */</font>
+00125 <font class="preprocessor">#define RE_NO_BK_BRACES (RE_NEWLINE_ALT &lt;&lt; 1)</font>
+00126 <font class="preprocessor"></font>
+00127 <font class="comment">/* If this bit is set, (...) defines a group, and \( and \) are literals.</font>
+00128 <font class="comment"> If not set, \(...\) defines a group, and ( and ) are literals. */</font>
+00129 <font class="preprocessor">#define RE_NO_BK_PARENS (RE_NO_BK_BRACES &lt;&lt; 1)</font>
+00130 <font class="preprocessor"></font>
+00131 <font class="comment">/* If this bit is set, then &lt;digit&gt; matches &lt;digit&gt;.</font>
+00132 <font class="comment"> If not set, then &lt;digit&gt; is a back-reference. */</font>
+00133 <font class="preprocessor">#define RE_NO_BK_REFS (RE_NO_BK_PARENS &lt;&lt; 1)</font>
+00134 <font class="preprocessor"></font>
+00135 <font class="comment">/* If this bit is set, then | is an alternation operator, and \| is literal.</font>
+00136 <font class="comment"> If not set, then \| is an alternation operator, and | is literal. */</font>
+00137 <font class="preprocessor">#define RE_NO_BK_VBAR (RE_NO_BK_REFS &lt;&lt; 1)</font>
+00138 <font class="preprocessor"></font>
+00139 <font class="comment">/* If this bit is set, then an ending range point collating higher</font>
+00140 <font class="comment"> than the starting range point, as in [z-a], is invalid.</font>
+00141 <font class="comment"> If not set, then when ending range point collates higher than the</font>
+00142 <font class="comment"> starting range point, the range is ignored. */</font>
+00143 <font class="preprocessor">#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR &lt;&lt; 1)</font>
+00144 <font class="preprocessor"></font>
+00145 <font class="comment">/* If this bit is set, then an unmatched ) is ordinary.</font>
+00146 <font class="comment"> If not set, then an unmatched ) is invalid. */</font>
+00147 <font class="preprocessor">#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES &lt;&lt; 1)</font>
+00148 <font class="preprocessor"></font>
+00149 <font class="comment">/* If this bit is set, succeed as soon as we match the whole pattern,</font>
+00150 <font class="comment"> without further backtracking. */</font>
+00151 <font class="preprocessor">#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD &lt;&lt; 1)</font>
+00152 <font class="preprocessor"></font>
+00153 <font class="comment">/* If this bit is set, do not process the GNU regex operators.</font>
+00154 <font class="comment"> If not set, then the GNU regex operators are recognized. */</font>
+00155 <font class="preprocessor">#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING &lt;&lt; 1)</font>
+00156 <font class="preprocessor"></font>
+00157 <font class="comment">/* If this bit is set, turn on internal regex debugging.</font>
+00158 <font class="comment"> If not set, and debugging was on, turn it off.</font>
+00159 <font class="comment"> This only works if regex.c is compiled -DDEBUG.</font>
+00160 <font class="comment"> We define this bit always, so that all that's needed to turn on</font>
+00161 <font class="comment"> debugging is to recompile regex.c; the calling code can always have</font>
+00162 <font class="comment"> this bit set, and it won't affect anything in the normal case. */</font>
+00163 <font class="preprocessor">#define RE_DEBUG (RE_NO_GNU_OPS &lt;&lt; 1)</font>
+00164 <font class="preprocessor"></font>
+00165 <font class="comment">/* This global variable defines the particular regexp syntax to use (for</font>
+00166 <font class="comment"> some interfaces). When a regexp is compiled, the syntax used is</font>
+00167 <font class="comment"> stored in the pattern buffer, so changing this does not affect</font>
+00168 <font class="comment"> already-compiled regexps. */</font>
+00169 <font class="keyword">extern</font> reg_syntax_t re_syntax_options;
+00170
+00171 <font class="comment">/* Define combinations of the above bits for the standard possibilities.</font>
+00172 <font class="comment"> (The [[[ comments delimit what gets put into the Texinfo file, so</font>
+00173 <font class="comment"> don't delete them!) */</font>
+00174 <font class="comment">/* [[[begin syntaxes]]] */</font>
+00175 <font class="preprocessor">#define RE_SYNTAX_EMACS 0</font>
+00176 <font class="preprocessor"></font>
+00177 <font class="preprocessor">#define RE_SYNTAX_AWK \</font>
+00178 <font class="preprocessor"> (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \</font>
+00179 <font class="preprocessor"> | RE_NO_BK_PARENS | RE_NO_BK_REFS \</font>
+00180 <font class="preprocessor"> | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \</font>
+00181 <font class="preprocessor"> | RE_DOT_NEWLINE | RE_CONTEXT_INDEP_ANCHORS \</font>
+00182 <font class="preprocessor"> | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)</font>
+00183 <font class="preprocessor"></font>
+00184 <font class="preprocessor">#define RE_SYNTAX_GNU_AWK \</font>
+00185 <font class="preprocessor"> ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG) \</font>
+00186 <font class="preprocessor"> &amp; ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS))</font>
+00187 <font class="preprocessor"></font>
+00188 <font class="preprocessor">#define RE_SYNTAX_POSIX_AWK \</font>
+00189 <font class="preprocessor"> (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \</font>
+00190 <font class="preprocessor"> | RE_INTERVALS | RE_NO_GNU_OPS)</font>
+00191 <font class="preprocessor"></font>
+00192 <font class="preprocessor">#define RE_SYNTAX_GREP \</font>
+00193 <font class="preprocessor"> (RE_BK_PLUS_QM | RE_CHAR_CLASSES \</font>
+00194 <font class="preprocessor"> | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \</font>
+00195 <font class="preprocessor"> | RE_NEWLINE_ALT)</font>
+00196 <font class="preprocessor"></font>
+00197 <font class="preprocessor">#define RE_SYNTAX_EGREP \</font>
+00198 <font class="preprocessor"> (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \</font>
+00199 <font class="preprocessor"> | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \</font>
+00200 <font class="preprocessor"> | RE_NEWLINE_ALT | RE_NO_BK_PARENS \</font>
+00201 <font class="preprocessor"> | RE_NO_BK_VBAR)</font>
+00202 <font class="preprocessor"></font>
+00203 <font class="preprocessor">#define RE_SYNTAX_POSIX_EGREP \</font>
+00204 <font class="preprocessor"> (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)</font>
+00205 <font class="preprocessor"></font>
+00206 <font class="comment">/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */</font>
+00207 <font class="preprocessor">#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC</font>
+00208 <font class="preprocessor"></font>
+00209 <font class="preprocessor">#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC</font>
+00210 <font class="preprocessor"></font>
+00211 <font class="comment">/* Syntax bits common to both basic and extended POSIX regex syntax. */</font>
+00212 <font class="preprocessor">#define _RE_SYNTAX_POSIX_COMMON \</font>
+00213 <font class="preprocessor"> (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \</font>
+00214 <font class="preprocessor"> | RE_INTERVALS | RE_NO_EMPTY_RANGES)</font>
+00215 <font class="preprocessor"></font>
+00216 <font class="preprocessor">#define RE_SYNTAX_POSIX_BASIC \</font>
+00217 <font class="preprocessor"> (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)</font>
+00218 <font class="preprocessor"></font>
+00219 <font class="comment">/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes</font>
+00220 <font class="comment"> RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this</font>
+00221 <font class="comment"> isn't minimal, since other operators, such as \`, aren't disabled. */</font>
+00222 <font class="preprocessor">#define RE_SYNTAX_POSIX_MINIMAL_BASIC \</font>
+00223 <font class="preprocessor"> (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)</font>
+00224 <font class="preprocessor"></font>
+00225 <font class="preprocessor">#define RE_SYNTAX_POSIX_EXTENDED \</font>
+00226 <font class="preprocessor"> (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \</font>
+00227 <font class="preprocessor"> | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \</font>
+00228 <font class="preprocessor"> | RE_NO_BK_PARENS | RE_NO_BK_VBAR \</font>
+00229 <font class="preprocessor"> | RE_UNMATCHED_RIGHT_PAREN_ORD)</font>
+00230 <font class="preprocessor"></font>
+00231 <font class="comment">/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS</font>
+00232 <font class="comment"> replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */</font>
+00233 <font class="preprocessor">#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \</font>
+00234 <font class="preprocessor"> (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \</font>
+00235 <font class="preprocessor"> | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \</font>
+00236 <font class="preprocessor"> | RE_NO_BK_PARENS | RE_NO_BK_REFS \</font>
+00237 <font class="preprocessor"> | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)</font>
+00238 <font class="preprocessor"></font><font class="comment">/* [[[end syntaxes]]] */</font>
+00239
+00240 <font class="comment">/* Maximum number of duplicates an interval can allow. Some systems</font>
+00241 <font class="comment"> (erroneously) define this in other header files, but we want our</font>
+00242 <font class="comment"> value, so remove any previous define. */</font>
+00243 <font class="preprocessor">#ifdef RE_DUP_MAX</font>
+00244 <font class="preprocessor"></font><font class="preprocessor">#undef RE_DUP_MAX</font>
+00245 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00246 <font class="preprocessor"></font><font class="comment">/* If sizeof(int) == 2, then ((1 &lt;&lt; 15) - 1) overflows. */</font>
+00247 <font class="preprocessor">#define RE_DUP_MAX (0x7fff)</font>
+00248 <font class="preprocessor"></font>
+00249
+00250 <font class="comment">/* POSIX `cflags' bits (i.e., information for `regcomp'). */</font>
+00251
+00252 <font class="comment">/* If this bit is set, then use extended regular expression syntax.</font>
+00253 <font class="comment"> If not set, then use basic regular expression syntax. */</font>
+00254 <font class="preprocessor">#define REG_EXTENDED 1</font>
+00255 <font class="preprocessor"></font>
+00256 <font class="comment">/* If this bit is set, then ignore case when matching.</font>
+00257 <font class="comment"> If not set, then case is significant. */</font>
+00258 <font class="preprocessor">#define REG_ICASE (REG_EXTENDED &lt;&lt; 1)</font>
+00259 <font class="preprocessor"></font>
+00260 <font class="comment">/* If this bit is set, then anchors do not match at newline</font>
+00261 <font class="comment"> characters in the string.</font>
+00262 <font class="comment"> If not set, then anchors do match at newlines. */</font>
+00263 <font class="preprocessor">#define REG_NEWLINE (REG_ICASE &lt;&lt; 1)</font>
+00264 <font class="preprocessor"></font>
+00265 <font class="comment">/* If this bit is set, then report only success or fail in regexec.</font>
+00266 <font class="comment"> If not set, then returns differ between not matching and errors. */</font>
+00267 <font class="preprocessor">#define REG_NOSUB (REG_NEWLINE &lt;&lt; 1)</font>
+00268 <font class="preprocessor"></font>
+00269
+00270 <font class="comment">/* POSIX `eflags' bits (i.e., information for regexec). */</font>
+00271
+00272 <font class="comment">/* If this bit is set, then the beginning-of-line operator doesn't match</font>
+00273 <font class="comment"> the beginning of the string (presumably because it's not the</font>
+00274 <font class="comment"> beginning of a line).</font>
+00275 <font class="comment"> If not set, then the beginning-of-line operator does match the</font>
+00276 <font class="comment"> beginning of the string. */</font>
+00277 <font class="preprocessor">#define REG_NOTBOL 1</font>
+00278 <font class="preprocessor"></font>
+00279 <font class="comment">/* Like REG_NOTBOL, except for the end-of-line. */</font>
+00280 <font class="preprocessor">#define REG_NOTEOL (1 &lt;&lt; 1)</font>
+00281 <font class="preprocessor"></font>
+00282
+00283 <font class="comment">/* If any error codes are removed, changed, or added, update the</font>
+00284 <font class="comment"> `re_error_msg' table in regex.c. */</font>
+00285 <font class="keyword">typedef</font> <font class="keyword">enum</font>
+00286 {
+00287 REG_NOERROR = 0, <font class="comment">/* Success. */</font>
+00288 REG_NOMATCH, <font class="comment">/* Didn't find a match (for regexec). */</font>
+00289
+00290 <font class="comment">/* POSIX regcomp return error codes. (In the order listed in the</font>
+00291 <font class="comment"> standard.) */</font>
+00292 REG_BADPAT, <font class="comment">/* Invalid pattern. */</font>
+00293 REG_ECOLLATE, <font class="comment">/* Not implemented. */</font>
+00294 REG_ECTYPE, <font class="comment">/* Invalid character class name. */</font>
+00295 REG_EESCAPE, <font class="comment">/* Trailing backslash. */</font>
+00296 REG_ESUBREG, <font class="comment">/* Invalid back reference. */</font>
+00297 REG_EBRACK, <font class="comment">/* Unmatched left bracket. */</font>
+00298 REG_EPAREN, <font class="comment">/* Parenthesis imbalance. */</font>
+00299 REG_EBRACE, <font class="comment">/* Unmatched \{. */</font>
+00300 REG_BADBR, <font class="comment">/* Invalid contents of \{\}. */</font>
+00301 REG_ERANGE, <font class="comment">/* Invalid range end. */</font>
+00302 REG_ESPACE, <font class="comment">/* Ran out of memory. */</font>
+00303 REG_BADRPT, <font class="comment">/* No preceding re for repetition op. */</font>
+00304
+00305 <font class="comment">/* Error codes we've added. */</font>
+00306 REG_EEND, <font class="comment">/* Premature end. */</font>
+00307 REG_ESIZE, <font class="comment">/* Compiled pattern bigger than 2^16 bytes. */</font>
+00308 REG_ERPAREN <font class="comment">/* Unmatched ) or \); not returned from regcomp. */</font>
+00309 }
+00310 reg_errcode_t;
+00311
+00312 <font class="comment">/* This data structure represents a compiled pattern. Before calling</font>
+00313 <font class="comment"> the pattern compiler, the fields `buffer', `allocated', `fastmap',</font>
+00314 <font class="comment"> `translate', and `no_sub' can be set. After the pattern has been</font>
+00315 <font class="comment"> compiled, the `re_nsub' field is available. All other fields are</font>
+00316 <font class="comment"> private to the regex routines. */</font>
+00317
+00318 <font class="preprocessor">#ifndef RE_TRANSLATE_TYPE</font>
+00319 <font class="preprocessor"></font><font class="preprocessor">#define RE_TRANSLATE_TYPE char *</font>
+00320 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00321 <font class="preprocessor"></font>
+00322 <font class="keyword">struct </font>re_pattern_buffer
+00323 {
+00324 <font class="comment">/* [[[begin pattern_buffer]]] */</font>
+00325 <font class="comment">/* Space that holds the compiled pattern. It is declared as</font>
+00326 <font class="comment"> `unsigned char *' because its elements are</font>
+00327 <font class="comment"> sometimes used as array indexes. */</font>
+00328 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *buffer;
+00329
+00330 <font class="comment">/* Number of bytes to which `buffer' points. */</font>
+00331 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> <font class="keywordtype">int</font> allocated;
+00332
+00333 <font class="comment">/* Number of bytes actually used in `buffer'. */</font>
+00334 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> <font class="keywordtype">int</font> used;
+00335
+00336 <font class="comment">/* Syntax setting with which the pattern was compiled. */</font>
+00337 reg_syntax_t syntax;
+00338
+00339 <font class="comment">/* Pointer to a fastmap, if any, otherwise zero. re_search uses</font>
+00340 <font class="comment"> the fastmap, if there is one, to skip over impossible</font>
+00341 <font class="comment"> starting points for matches. */</font>
+00342 <font class="keywordtype">char</font> *fastmap;
+00343
+00344 <font class="comment">/* Either a translate table to apply to all characters before</font>
+00345 <font class="comment"> comparing them, or zero for no translation. The translation</font>
+00346 <font class="comment"> is applied to a pattern when it is compiled and to a string</font>
+00347 <font class="comment"> when it is matched. */</font>
+00348 RE_TRANSLATE_TYPE translate;
+00349
+00350 <font class="comment">/* Number of subexpressions found by the compiler. */</font>
+00351 size_t re_nsub;
+00352
+00353 <font class="comment">/* Zero if this pattern cannot match the empty string, one else.</font>
+00354 <font class="comment"> Well, in truth it's used only in `re_search_2', to see</font>
+00355 <font class="comment"> whether or not we should use the fastmap, so we don't set</font>
+00356 <font class="comment"> this absolutely perfectly; see `re_compile_fastmap' (the</font>
+00357 <font class="comment"> `duplicate' case). */</font>
+00358 <font class="keywordtype">unsigned</font> can_be_null:1;
+00359
+00360 <font class="comment">/* If REGS_UNALLOCATED, allocate space in the `regs' structure</font>
+00361 <font class="comment"> for `max (RE_NREGS, re_nsub + 1)' groups.</font>
+00362 <font class="comment"> If REGS_REALLOCATE, reallocate space if necessary.</font>
+00363 <font class="comment"> If REGS_FIXED, use what's there. */</font>
+00364 <font class="preprocessor">#define REGS_UNALLOCATED 0</font>
+00365 <font class="preprocessor"></font><font class="preprocessor">#define REGS_REALLOCATE 1</font>
+00366 <font class="preprocessor"></font><font class="preprocessor">#define REGS_FIXED 2</font>
+00367 <font class="preprocessor"></font> <font class="keywordtype">unsigned</font> regs_allocated:2;
+00368
+00369 <font class="comment">/* Set to zero when `regex_compile' compiles a pattern; set to one</font>
+00370 <font class="comment"> by `re_compile_fastmap' if it updates the fastmap. */</font>
+00371 <font class="keywordtype">unsigned</font> fastmap_accurate:1;
+00372
+00373 <font class="comment">/* If set, `re_match_2' does not return information about</font>
+00374 <font class="comment"> subexpressions. */</font>
+00375 <font class="keywordtype">unsigned</font> no_sub:1;
+00376
+00377 <font class="comment">/* If set, a beginning-of-line anchor doesn't match at the</font>
+00378 <font class="comment"> beginning of the string. */</font>
+00379 <font class="keywordtype">unsigned</font> not_bol:1;
+00380
+00381 <font class="comment">/* Similarly for an end-of-line anchor. */</font>
+00382 <font class="keywordtype">unsigned</font> not_eol:1;
+00383
+00384 <font class="comment">/* If true, an anchor at a newline matches. */</font>
+00385 <font class="keywordtype">unsigned</font> newline_anchor:1;
+00386
+00387 <font class="comment">/* [[[end pattern_buffer]]] */</font>
+00388 };
+00389
+00390 <font class="keyword">typedef</font> <font class="keyword">struct </font>re_pattern_buffer regex_t;
+00391
+00392 <font class="comment">/* Type for byte offsets within the string. POSIX mandates this. */</font>
+00393 <font class="keyword">typedef</font> <font class="keywordtype">int</font> regoff_t;
+00394
+00395
+00396 <font class="comment">/* This is the structure we store register match data in. See</font>
+00397 <font class="comment"> regex.texinfo for a full description of what registers match. */</font>
+00398 <font class="keyword">struct </font>re_registers
+00399 {
+00400 <font class="keywordtype">unsigned</font> num_regs;
+00401 regoff_t *start;
+00402 regoff_t *end;
+00403 };
+00404
+00405
+00406 <font class="comment">/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,</font>
+00407 <font class="comment"> `re_match_2' returns information about at least this many registers</font>
+00408 <font class="comment"> the first time a `regs' structure is passed. */</font>
+00409 <font class="preprocessor">#ifndef RE_NREGS</font>
+00410 <font class="preprocessor"></font><font class="preprocessor">#define RE_NREGS 30</font>
+00411 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00412 <font class="preprocessor"></font>
+00413
+00414 <font class="comment">/* POSIX specification for registers. Aside from the different names than</font>
+00415 <font class="comment"> `re_registers', POSIX uses an array of structures, instead of a</font>
+00416 <font class="comment"> structure of arrays. */</font>
+00417 <font class="keyword">typedef</font> <font class="keyword">struct</font>
+00418 <font class="keyword"> </font>{
+00419 regoff_t rm_so; <font class="comment">/* Byte offset from string's start to substring's start. */</font>
+00420 regoff_t rm_eo; <font class="comment">/* Byte offset from string's start to substring's end. */</font>
+00421 }
+00422 regmatch_t;
+00423
+00424 <font class="comment">/* Declarations for routines. */</font>
+00425
+00426 <font class="comment">/* To avoid duplicating every routine declaration -- once with a</font>
+00427 <font class="comment"> prototype (if we are ANSI), and once without (if we aren't) -- we</font>
+00428 <font class="comment"> use the following macro to declare argument types. This</font>
+00429 <font class="comment"> unfortunately clutters up the declarations a bit, but I think it's</font>
+00430 <font class="comment"> worth it. */</font>
+00431 <font class="preprocessor">#ifndef __STDC__</font>
+00432 <font class="preprocessor"></font><font class="preprocessor">#define __STDC__ 1</font>
+00433 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00434 <font class="preprocessor"></font><font class="preprocessor">#if __STDC__</font>
+00435 <font class="preprocessor"></font>
+00436 <font class="preprocessor">#define _RE_ARGS(args) args</font>
+00437 <font class="preprocessor"></font>
+00438 <font class="preprocessor">#else </font><font class="comment">/* not __STDC__ */</font>
+00439
+00440 <font class="preprocessor">#define _RE_ARGS(args) ()</font>
+00441 <font class="preprocessor"></font>
+00442 <font class="preprocessor">#endif </font><font class="comment">/* not __STDC__ */</font>
+00443
+00444 <font class="comment">/* Sets the current default syntax to SYNTAX, and return the old syntax.</font>
+00445 <font class="comment"> You can also simply assign to the `re_syntax_options' variable. */</font>
+00446 <font class="keyword">extern</font> reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
+00447
+00448 <font class="comment">/* Compile the regular expression PATTERN, with length LENGTH</font>
+00449 <font class="comment"> and syntax given by the global `re_syntax_options', into the buffer</font>
+00450 <font class="comment"> BUFFER. Return NULL if successful, and an error string if not. */</font>
+00451 <font class="keyword">extern</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *re_compile_pattern
+00452 _RE_ARGS ((<font class="keyword">const</font> <font class="keywordtype">char</font> *pattern, size_t length,
+00453 <font class="keyword">struct</font> re_pattern_buffer * buffer));
+00454
+00455
+00456 <font class="comment">/* Compile a fastmap for the compiled pattern in BUFFER; used to</font>
+00457 <font class="comment"> accelerate searches. Return 0 if successful and -2 if was an</font>
+00458 <font class="comment"> internal error. */</font>
+00459 <font class="keyword">extern</font> <font class="keywordtype">int</font> re_compile_fastmap
+00460 _RE_ARGS ((<font class="keyword">struct</font> re_pattern_buffer * buffer));
+00461
+00462
+00463 <font class="comment">/* Search in the string STRING (with length LENGTH) for the pattern</font>
+00464 <font class="comment"> compiled into BUFFER. Start searching at position START, for RANGE</font>
+00465 <font class="comment"> characters. Return the starting position of the match, -1 for no</font>
+00466 <font class="comment"> match, or -2 for an internal error. Also return register</font>
+00467 <font class="comment"> information in REGS (if REGS and BUFFER-&gt;no_sub are nonzero). */</font>
+00468 <font class="keyword">extern</font> <font class="keywordtype">int</font> re_search
+00469 _RE_ARGS ((<font class="keyword">struct</font> re_pattern_buffer * buffer, <font class="keyword">const</font> <font class="keywordtype">char</font> *string,
+00470 <font class="keywordtype">int</font> length, <font class="keywordtype">int</font> start, <font class="keywordtype">int</font> range, <font class="keyword">struct</font> re_registers * regs));
+00471
+00472
+00473 <font class="comment">/* Like `re_search', but search in the concatenation of STRING1 and</font>
+00474 <font class="comment"> STRING2. Also, stop searching at index START + STOP. */</font>
+00475 <font class="keyword">extern</font> <font class="keywordtype">int</font> re_search_2
+00476 _RE_ARGS ((<font class="keyword">struct</font> re_pattern_buffer * buffer, <font class="keyword">const</font> <font class="keywordtype">char</font> *string1,
+00477 <font class="keywordtype">int</font> length1, <font class="keyword">const</font> <font class="keywordtype">char</font> *string2, <font class="keywordtype">int</font> length2,
+00478 <font class="keywordtype">int</font> start, <font class="keywordtype">int</font> range, <font class="keyword">struct</font> re_registers * regs, <font class="keywordtype">int</font> stop));
+00479
+00480
+00481 <font class="comment">/* Like `re_search', but return how many characters in STRING the regexp</font>
+00482 <font class="comment"> in BUFFER matched, starting at position START. */</font>
+00483 <font class="keyword">extern</font> <font class="keywordtype">int</font> re_match
+00484 _RE_ARGS ((<font class="keyword">struct</font> re_pattern_buffer * buffer, <font class="keyword">const</font> <font class="keywordtype">char</font> *string,
+00485 <font class="keywordtype">int</font> length, <font class="keywordtype">int</font> start, <font class="keyword">struct</font> re_registers * regs));
+00486
+00487
+00488 <font class="comment">/* Relates to `re_match' as `re_search_2' relates to `re_search'. */</font>
+00489 <font class="keyword">extern</font> <font class="keywordtype">int</font> re_match_2
+00490 _RE_ARGS ((<font class="keyword">struct</font> re_pattern_buffer * buffer, <font class="keyword">const</font> <font class="keywordtype">char</font> *string1,
+00491 <font class="keywordtype">int</font> length1, <font class="keyword">const</font> <font class="keywordtype">char</font> *string2, <font class="keywordtype">int</font> length2,
+00492 <font class="keywordtype">int</font> start, <font class="keyword">struct</font> re_registers * regs, <font class="keywordtype">int</font> stop));
+00493
+00494
+00495 <font class="comment">/* Set REGS to hold NUM_REGS registers, storing them in STARTS and</font>
+00496 <font class="comment"> ENDS. Subsequent matches using BUFFER and REGS will use this memory</font>
+00497 <font class="comment"> for recording register information. STARTS and ENDS must be</font>
+00498 <font class="comment"> allocated with malloc, and must each be at least `NUM_REGS * sizeof</font>
+00499 <font class="comment"> (regoff_t)' bytes long.</font>
+00500 <font class="comment"></font>
+00501 <font class="comment"> If NUM_REGS == 0, then subsequent matches should allocate their own</font>
+00502 <font class="comment"> register data.</font>
+00503 <font class="comment"></font>
+00504 <font class="comment"> Unless this function is called, the first search or match using</font>
+00505 <font class="comment"> PATTERN_BUFFER will allocate its own register data, without</font>
+00506 <font class="comment"> freeing the old data. */</font>
+00507 <font class="keyword">extern</font> <font class="keywordtype">void</font> re_set_registers
+00508 _RE_ARGS ((<font class="keyword">struct</font> re_pattern_buffer * buffer, <font class="keyword">struct</font> re_registers * regs,
+00509 <font class="keywordtype">unsigned</font> num_regs, regoff_t * starts, regoff_t * ends));
+00510
+00511 <font class="preprocessor">#ifdef _REGEX_RE_COMP</font>
+00512 <font class="preprocessor"></font><font class="preprocessor">#ifndef _CRAY</font>
+00513 <font class="preprocessor"></font><font class="comment">/* 4.2 bsd compatibility. */</font>
+00514 <font class="keyword">extern</font> <font class="keywordtype">char</font> *re_comp _RE_ARGS ((<font class="keyword">const</font> <font class="keywordtype">char</font> *));
+00515 <font class="keyword">extern</font> <font class="keywordtype">int</font> re_exec _RE_ARGS ((<font class="keyword">const</font> <font class="keywordtype">char</font> *));
+00516 <font class="preprocessor">#endif</font>
+00517 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00518 <font class="preprocessor"></font>
+00519 <font class="comment">/* POSIX compatibility. */</font>
+00520 <font class="keyword">extern</font> <font class="keywordtype">int</font> regcomp
+00521 _RE_ARGS ((regex_t * preg, <font class="keyword">const</font> <font class="keywordtype">char</font> *pattern, <font class="keywordtype">int</font> cflags));
+00522 <font class="keyword">extern</font> <font class="keywordtype">int</font> regexec
+00523 _RE_ARGS (
+00524 (<font class="keyword">const</font> regex_t * preg, <font class="keyword">const</font> <font class="keywordtype">char</font> *string, size_t nmatch,
+00525 regmatch_t pmatch[], <font class="keywordtype">int</font> eflags));
+00526 <font class="keyword">extern</font> size_t regerror
+00527 _RE_ARGS (
+00528 (<font class="keywordtype">int</font> errcode, <font class="keyword">const</font> regex_t * preg, <font class="keywordtype">char</font> *errbuf,
+00529 size_t errbuf_size));
+00530 <font class="keyword">extern</font> <font class="keywordtype">void</font> regfree _RE_ARGS ((regex_t * preg));
+00531
+00532
+00533 <font class="preprocessor">#ifdef __cplusplus</font>
+00534 <font class="preprocessor"></font>}
+00535 <font class="preprocessor">#endif </font><font class="comment">/* C++ */</font>
+00536
+00537 <font class="preprocessor">#endif </font><font class="comment">/* regex.h */</font>
+00538
+00539 <font class="comment">/*</font>
+00540 <font class="comment">Local variables:</font>
+00541 <font class="comment">make-backup-files: t</font>
+00542 <font class="comment">version-control: t</font>
+00543 <font class="comment">trim-versions-without-asking: nil</font>
+00544 <font class="comment">End:</font>
+00545 <font class="comment">*/</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/roman_8h-source.html b/doc/api-documentation/html/roman_8h-source.html
new file mode 100644
index 0000000..87dac78
--- /dev/null
+++ b/doc/api-documentation/html/roman_8h-source.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>roman.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>roman.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * roman.h - roman numeral functions</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019 <font class="preprocessor">#ifndef ROMAN_H</font>
+00020 <font class="preprocessor"></font><font class="preprocessor">#define ROMAN_H</font>
+00021 <font class="preprocessor"></font><font class="keywordtype">char</font> isroman(<font class="keyword">const</font> <font class="keywordtype">char</font> *);
+00022 <font class="comment">/* char* to_rom(int num, char *p); */</font>
+00023 <font class="keywordtype">int</font> from_rom(<font class="keyword">const</font> <font class="keywordtype">char</font> *s);
+00024
+00025 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rtfhtml_8cpp-source.html b/doc/api-documentation/html/rtfhtml_8cpp-source.html
new file mode 100644
index 0000000..47280d8
--- /dev/null
+++ b/doc/api-documentation/html/rtfhtml_8cpp-source.html
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rtfhtml.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rtfhtml.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> rtfhtml.cpp - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Wed Oct 13 1999</font>
+00005 <font class="comment"> copyright : (C) 1999 by The team of BibleTime</font>
+00006 <font class="comment"> email : info@bibletime.de</font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. *</font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;rtfhtml.h&gt;</font>
+00021
+00022
+00023 RTFHTML::RTFHTML() {
+00024
+00025 }
+00026
+00027
+00028 <font class="keywordtype">char</font> RTFHTML::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00029 {
+00030 <font class="keywordtype">char</font> *to, *from;
+00031 <font class="keywordtype">int</font> len;
+00032 <font class="keywordtype">bool</font> center = <font class="keyword">false</font>;
+00033
+00034 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00035 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00036 memmove(&amp;text[maxlen - len], text, len);
+00037 from = &amp;text[maxlen - len];
+00038 }
+00039 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00040 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00041 <font class="keywordflow">if</font> (*from == <font class="charliteral">'\\'</font>) <font class="comment">// a RTF command</font>
+00042 {
+00043 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">'p'</font>) &amp;&amp; (from[2] == <font class="charliteral">'a'</font>) &amp;&amp; (from[3] == <font class="charliteral">'r'</font>) &amp;&amp; (from[4] == <font class="charliteral">'d'</font>))
+00044 { <font class="comment">// switch all modifier off</font>
+00045 <font class="keywordflow">if</font> (center)
+00046 {
+00047 *to++ = <font class="charliteral">'&lt;'</font>;
+00048 *to++ = <font class="charliteral">'/'</font>;
+00049 *to++ = <font class="charliteral">'C'</font>;
+00050 *to++ = <font class="charliteral">'E'</font>;
+00051 *to++ = <font class="charliteral">'N'</font>;
+00052 *to++ = <font class="charliteral">'T'</font>;
+00053 *to++ = <font class="charliteral">'E'</font>;
+00054 *to++ = <font class="charliteral">'R'</font>;
+00055 *to++ = <font class="charliteral">'&gt;'</font>;
+00056 center = <font class="keyword">false</font>;
+00057 }
+00058 from += 4;
+00059 <font class="keywordflow">continue</font>;
+00060 }
+00061 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">'p'</font>) &amp;&amp; (from[2] == <font class="charliteral">'a'</font>) &amp;&amp; (from[3] == <font class="charliteral">'r'</font>))
+00062 {
+00063 *to++ = <font class="charliteral">'&lt;'</font>;
+00064 *to++ = <font class="charliteral">'P'</font>;
+00065 *to++ = <font class="charliteral">'&gt;'</font>;
+00066 *to++ = <font class="charliteral">'\n'</font>;
+00067 from += 3;
+00068 <font class="keywordflow">continue</font>;
+00069 }
+00070 <font class="keywordflow">if</font> (from[1] == <font class="charliteral">' '</font>)
+00071 {
+00072 from += 1;
+00073 <font class="keywordflow">continue</font>;
+00074 }
+00075 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">'q'</font>) &amp;&amp; (from[2] == <font class="charliteral">'c'</font>)) <font class="comment">// center on</font>
+00076 {
+00077 <font class="keywordflow">if</font> (!center)
+00078 {
+00079 *to++ = <font class="charliteral">'&lt;'</font>;
+00080 *to++ = <font class="charliteral">'C'</font>;
+00081 *to++ = <font class="charliteral">'E'</font>;
+00082 *to++ = <font class="charliteral">'N'</font>;
+00083 *to++ = <font class="charliteral">'T'</font>;
+00084 *to++ = <font class="charliteral">'E'</font>;
+00085 *to++ = <font class="charliteral">'R'</font>;
+00086 *to++ = <font class="charliteral">'&gt;'</font>;
+00087 center = <font class="keyword">true</font>;
+00088 }
+00089 from += 2;
+00090 <font class="keywordflow">continue</font>;
+00091 }
+00092 }
+00093
+00094 *to++ = *from;
+00095 }
+00096 *to++ = 0;
+00097 *to = 0;
+00098 <font class="keywordflow">return</font> 0;
+00099 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rtfhtml_8h-source.html b/doc/api-documentation/html/rtfhtml_8h-source.html
new file mode 100644
index 0000000..4e2fde5
--- /dev/null
+++ b/doc/api-documentation/html/rtfhtml_8h-source.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rtfhtml.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rtfhtml.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> rtfhtml.h - description </font>
+00003 <font class="comment"> ------------------- </font>
+00004 <font class="comment"> begin : Wed Oct 13 1999 </font>
+00005 <font class="comment"> copyright : (C) 1999 by The team of BibleTime </font>
+00006 <font class="comment"> email : info@bibletime.de </font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. * </font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="comment">/* $Header: /usr/local/cvsroot/sword/doc/api-documentation/html/rtfhtml_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $ */</font>
+00019 <font class="comment">/* $Revision: 1.7 $ */</font>
+00020
+00021 <font class="preprocessor">#ifndef RTFHTML_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define RTFHTML_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_r_t_f_h_t_m_l.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_r_t_f_h_t_m_l.html">RTFHTML</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keyword">public</font>:
+00033 <a class="code" href="class_r_t_f_h_t_m_l.html">RTFHTML</a> ();
+00034 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00035 };
+00036
+00037 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rwphtml_8cpp-source.html b/doc/api-documentation/html/rwphtml_8cpp-source.html
new file mode 100644
index 0000000..eca1cfd
--- /dev/null
+++ b/doc/api-documentation/html/rwphtml_8cpp-source.html
@@ -0,0 +1,201 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rwphtml.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rwphtml.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> rwphtml.cpp - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Thu Jun 24 1999</font>
+00005 <font class="comment"> copyright : (C) 1999 by Torsten Uhlmann</font>
+00006 <font class="comment"> email : TUhlmann@gmx.de</font>
+00007 <font class="comment"> ***************************************************************************/</font>
+00008
+00009 <font class="comment">/***************************************************************************</font>
+00010 <font class="comment"> * *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00014 <font class="comment"> * (at your option) any later version. *</font>
+00015 <font class="comment"> * *</font>
+00016 <font class="comment"> ***************************************************************************/</font>
+00017
+00018 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;rwphtml.h&gt;</font>
+00022
+00023 RWPHTML::RWPHTML()
+00024 {
+00025 }
+00026
+00027
+00028 <font class="keywordtype">char</font> RWPHTML::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00029 {
+00030 <font class="keywordtype">char</font> *to, *from;
+00031 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> greek_str[500];
+00032 <font class="keywordtype">bool</font> inverse = <font class="keyword">false</font>;
+00033 <font class="keywordtype">bool</font> first_letter = <font class="keyword">false</font>;
+00034 <font class="keywordtype">int</font> len;
+00035
+00036 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00037 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00038 memmove(&amp;text[maxlen - len], text, len);
+00039 from = &amp;text[maxlen - len];
+00040 } <font class="keywordflow">else</font>
+00041 from = text;
+00042 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00043 <font class="keywordflow">if</font> (*from == <font class="charliteral">'\\'</font>) {
+00044 ++from;
+00045 <font class="keywordtype">int</font> i=0;
+00046 first_letter = <font class="keyword">true</font>;
+00047 greek_str[0] = <font class="charliteral">'\0'</font>;
+00048 <font class="keywordflow">while</font> (*from != <font class="charliteral">'\\'</font>) { <font class="comment">/* get the greek word or phrase */</font>
+00049 greek_str[i++] = *from;
+00050 greek_str[i + 1] = <font class="charliteral">'\0'</font>;
+00051 from++;
+00052 } <font class="comment">/* convert to symbol font as best we can */</font>
+00053 strcpy(to,<font class="stringliteral">"&lt;I&gt; &lt;/I&gt;&lt;FONT FACE=\"symbol\"&gt;"</font>);
+00054 to += strlen(to);
+00055 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> j = 0; j &lt; i; j++) {
+00056 <font class="keywordflow">if</font> ((first_letter)
+00057 &amp;&amp; (greek_str[j] == <font class="charliteral">'h'</font>)) {
+00058 <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'o'</font>) {
+00059 *to++ = <font class="charliteral">'o'</font>;
+00060 first_letter = <font class="keyword">false</font>;
+00061 ++j;
+00062 <font class="keywordflow">continue</font>;
+00063 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'a'</font>) {
+00064 *to++ = <font class="charliteral">'a'</font>;
+00065 first_letter = <font class="keyword">false</font>;
+00066 ++j;
+00067 <font class="keywordflow">continue</font>;
+00068 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'w'</font>) {
+00069 *to++ = <font class="charliteral">'w'</font>;
+00070 first_letter = <font class="keyword">false</font>;
+00071 ++j;
+00072 <font class="keywordflow">continue</font>;
+00073 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'u'</font>) {
+00074 *to++ = <font class="charliteral">'u'</font>;
+00075 first_letter = <font class="keyword">false</font>;
+00076 ++j;
+00077 <font class="keywordflow">continue</font>;
+00078 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] ==
+00079 -109) {
+00080 *to++ = <font class="charliteral">'w'</font>;
+00081 first_letter = <font class="keyword">false</font>;
+00082 ++j;
+00083 <font class="keywordflow">continue</font>;
+00084 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] ==
+00085 -120) {
+00086 *to++ = <font class="charliteral">'h'</font>;
+00087 first_letter = <font class="keyword">false</font>;
+00088 ++j;
+00089 <font class="keywordflow">continue</font>;
+00090 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'i'</font>) {
+00091 *to++ = <font class="charliteral">'i'</font>;
+00092 first_letter = <font class="keyword">false</font>;
+00093 ++j;
+00094 <font class="keywordflow">continue</font>;
+00095 }<font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'e'</font>) {
+00096 *to++ = <font class="charliteral">'e'</font>;
+00097 first_letter = <font class="keyword">false</font>;
+00098 ++j;
+00099 <font class="keywordflow">continue</font>;
+00100 }
+00101 first_letter = <font class="keyword">false</font>;
+00102 }
+00103 <font class="keywordflow">if</font> ((greek_str[j] == <font class="charliteral">'t'</font>)
+00104 &amp;&amp; (greek_str[j + 1] == <font class="charliteral">'h'</font>)) {
+00105 *to++ = <font class="charliteral">'q'</font>;
+00106 ++j;
+00107 <font class="keywordflow">continue</font>;
+00108 }
+00109 <font class="keywordflow">if</font> ((greek_str[j] == <font class="charliteral">'c'</font>)
+00110 &amp;&amp; (greek_str[j + 1] == <font class="charliteral">'h'</font>)) {
+00111 *to++ = <font class="charliteral">'c'</font>;
+00112 ++j;
+00113 <font class="keywordflow">continue</font>;
+00114 }
+00115 <font class="keywordflow">if</font> ((greek_str[j] == <font class="charliteral">'p'</font>)
+00116 &amp;&amp; (greek_str[j + 1] == <font class="charliteral">'h'</font>)) {
+00117 ++j;
+00118 *to++ = <font class="charliteral">'f'</font>;
+00119 <font class="keywordflow">continue</font>;
+00120 }
+00121 <font class="keywordflow">if</font> (greek_str[j] == -120) {
+00122 *to++ = <font class="charliteral">'h'</font>;
+00123 <font class="keywordflow">continue</font>;
+00124 }
+00125 <font class="keywordflow">if</font> (greek_str[j] == -125) {
+00126 *to++ = <font class="charliteral">'a'</font>;
+00127 <font class="keywordflow">continue</font>;
+00128 }
+00129 <font class="keywordflow">if</font> (greek_str[j] == -109) {
+00130 <font class="keywordflow">if</font>(greek_str[j+1] == <font class="charliteral">'i'</font>) ++j;
+00131 *to++ = <font class="charliteral">'w'</font>;
+00132 <font class="keywordflow">continue</font>;
+00133 }
+00134 <font class="keywordflow">if</font> (greek_str[j] == <font class="charliteral">' '</font>)
+00135 first_letter = <font class="keyword">true</font>;
+00136 <font class="keywordflow">if</font> (greek_str[j] == <font class="charliteral">'s'</font>) {
+00137 <font class="keywordflow">if</font>(isalpha(greek_str[j + 1])) *to++ = <font class="charliteral">'s'</font>;
+00138 <font class="keywordflow">else</font> <font class="keywordflow">if</font>(!isprint(greek_str[j] )) *to++ = <font class="charliteral">'s'</font>;
+00139 <font class="keywordflow">else</font> *to++ = <font class="charliteral">'V'</font>;
+00140 <font class="keywordflow">continue</font>;
+00141 }
+00142 <font class="keywordflow">if</font> (greek_str[j] == <font class="charliteral">'\''</font>) {
+00143 <font class="keywordflow">continue</font>;
+00144 }
+00145 *to++ = greek_str[j];
+00146 }
+00147 strcpy(to,<font class="stringliteral">"&lt;/FONT&gt;&lt;I&gt; &lt;/I&gt;"</font>);
+00148 to += strlen(to);
+00149 <font class="keywordflow">continue</font>;
+00150 }
+00151 <font class="keywordflow">if</font> (*from == <font class="charliteral">'#'</font>) { <font class="comment">// verse markings (e.g. "#Mark 1:1|")</font>
+00152 inverse = <font class="keyword">true</font>;
+00153 strcpy(to,<font class="stringliteral">"&lt;FONT COLOR=#0000FF&gt;"</font>);
+00154 to += strlen(to);
+00155 <font class="keywordflow">continue</font>;
+00156 }
+00157 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'|'</font>) &amp;&amp; (inverse)) {
+00158 inverse = <font class="keyword">false</font>;
+00159 strcpy(to,<font class="stringliteral">"&lt;/FONT&gt;"</font>);
+00160 to += strlen(to);
+00161 <font class="keywordflow">continue</font>;
+00162 }
+00163 <font class="keywordflow">if</font> (*from == <font class="charliteral">'{'</font>) {
+00164 strcpy(to,<font class="stringliteral">"&lt;BR&gt;&lt;STRONG&gt;"</font>);
+00165 to += strlen(to);
+00166 <font class="keywordflow">if</font> ((from - &amp;text[maxlen - len]) &gt; 10) { <font class="comment">// not the beginning of the entry</font>
+00167 strcpy(to,<font class="stringliteral">"&lt;P&gt;"</font>);
+00168 to += strlen(to);
+00169 }
+00170 <font class="keywordflow">continue</font>;
+00171 }
+00172 <font class="keywordflow">if</font> (*from == <font class="charliteral">'}'</font>) {
+00173 strcpy(to,<font class="stringliteral">" &lt;/STRONG&gt;"</font>);
+00174 to += strlen(to);
+00175 <font class="keywordflow">continue</font>;
+00176 }
+00177 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'\n'</font>) &amp;&amp; (from[1] == <font class="charliteral">'\n'</font>)) {
+00178 strcpy(to,<font class="stringliteral">"&lt;P&gt;"</font>);
+00179 to += strlen(to);
+00180 <font class="keywordflow">continue</font>;
+00181 }
+00182 *to++ = *from;
+00183 }
+00184 *to++ = 0;
+00185 *to = 0;
+00186 <font class="keywordflow">return</font> 0;
+00187 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rwphtml_8h-source.html b/doc/api-documentation/html/rwphtml_8h-source.html
new file mode 100644
index 0000000..0912f77
--- /dev/null
+++ b/doc/api-documentation/html/rwphtml_8h-source.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rwphtml.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rwphtml.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> rwphtml.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : Tue Jun 15 15:34:26 CEST 1999</font>
+00005 <font class="comment"></font>
+00006 <font class="comment"> copyright : (C) 1999 by Torsten Uhlmann</font>
+00007 <font class="comment"> email : TUhlmann@gmx.de</font>
+00008 <font class="comment"> ***************************************************************************/</font>
+00009
+00010 <font class="comment">/***************************************************************************</font>
+00011 <font class="comment"> * *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00013 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00014 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00015 <font class="comment"> * (at your option) any later version. *</font>
+00016 <font class="comment"> * *</font>
+00017 <font class="comment"> ***************************************************************************/</font>
+00018
+00019 <font class="comment">/* $Header: /usr/local/cvsroot/sword/doc/api-documentation/html/rwphtml_8h-source.html,v 1.7 2002/06/20 20:23:09 mgruner Exp $ */</font>
+00020 <font class="comment">/* $Revision: 1.7 $ */</font>
+00021
+00022 <font class="preprocessor">#ifndef RWPHTML_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define RWPHTML_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+<a name="l00031"></a><a class="code" href="class_r_w_p_h_t_m_l.html">00031</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_r_w_p_h_t_m_l.html">RWPHTML</a>:<font class="keyword">public</font> SWFilter
+00032 {
+00033 <font class="keyword">public</font>:
+00034 <a class="code" href="class_r_w_p_h_t_m_l.html">RWPHTML</a> ();
+00035 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00036 };
+00037
+00038 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rwpidx_8cpp-source.html b/doc/api-documentation/html/rwpidx_8cpp-source.html
new file mode 100644
index 0000000..772691b
--- /dev/null
+++ b/doc/api-documentation/html/rwpidx_8cpp-source.html
@@ -0,0 +1,280 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rwpidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rwpidx.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * This code wreaks but works (at least for RWP). Good luck!</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00019
+00020
+00021 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00022 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size);
+00023 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname);
+00024 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00025
+00026
+00027 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00028 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00029 <font class="keywordtype">long</font> chapoffset;
+00030 <font class="keywordtype">short</font> chapsize;
+00031 <font class="keywordtype">char</font> testmnt;
+00032
+00033
+00034 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00035 {
+00036 <font class="keywordtype">long</font> pos, offset;
+00037 <font class="keywordtype">int</font> num1 = 0, num2 = 0, rangemax, curbook = 0, curchap = 0, curverse = 0;
+00038 <font class="keywordtype">char</font> buf[127], startflag = 0;
+00039 <font class="keywordtype">short</font> size, tmp;
+00040
+00041 checkparams(argc, argv);
+00042
+00043 openfiles(argv[1]);
+00044
+00045 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00046 pos = 0;
+00047 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00048 pos = 4;
+00049 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00050
+00051
+00052 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00053 pos = 0;
+00054 size = 0;
+00055 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00056 write(vfp, &amp;size, 2);
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059
+00060 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00061 <font class="keywordflow">if</font> (num2) {
+00062 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00063 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00064 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(num2);
+00065 }
+00066 <font class="keywordflow">else</font> {
+00067 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00068 <font class="keywordflow">if</font> (!startflag) {
+00069 startflag = 1;
+00070 }
+00071 <font class="keywordflow">else</font> {
+00072 <font class="keywordflow">if</font> (num1 &lt;= key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>()) { <font class="comment">// new book</font>
+00073 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00074 key2.<a class="code" href="class_verse_key.html#a23">Book</a>(key2.<a class="code" href="class_verse_key.html#a23">Book</a>()+1);
+00075 }
+00076 }
+00077 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00078 printf(<font class="stringliteral">"Found Chapter Break: %d ('%s')\n"</font>, num1, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key2);
+00079 chapoffset = offset;
+00080 chapsize = size;
+00081 <font class="keywordflow">continue</font>;
+00082 }
+00083
+00084 key3 = key2;
+00085 key3 += (rangemax - key3.<a class="code" href="class_verse_key.html#a25">Verse</a>());
+00086
+00087 printf(<font class="stringliteral">"Found verse Break: ('%s')\n"</font>, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key2);
+00088 writeidx(key1, key2, key3, offset, size);
+00089 }
+00090 close(vfp);
+00091 close(cfp);
+00092 close(bfp);
+00093 close(fp);
+00094 }
+00095
+00096
+00097 <font class="comment">/**************************************************************************</font>
+00098 <font class="comment"> * ENT: key1 - current location of index</font>
+00099 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00100 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00101 <font class="comment"> */</font>
+00102
+00103 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00104 {
+00105 <font class="keywordtype">long</font> pos;
+00106 <font class="keywordtype">short</font> tmp;
+00107
+00108 <font class="keywordflow">for</font> (; ((key1 &lt;= key3) &amp;&amp; (key1.<a class="code" href="class_s_w_key.html#a6">Error</a>() != KEYERR_OUTOFBOUNDS) &amp;&amp; (key1.<a class="code" href="class_verse_key.html#a22">Testament</a>() == testmnt)); key1+=1) {
+00109 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00110 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00111 pos = lseek(cfp, 0, SEEK_CUR);
+00112 write(bfp, &amp;pos, 4);
+00113 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00114 write(cfp, &amp;pos, 4);
+00115 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Book intro (vss) set to same as chap for now(it should be chap 1 which usually contains the book into anyway)*/</font>
+00116 write(vfp, &amp;chapsize, 2);
+00117 }
+00118 pos = lseek(vfp, 0, SEEK_CUR);
+00119 write(cfp, &amp;pos, 4);
+00120 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00121 write(vfp, &amp;chapsize, 2);
+00122 }
+00123 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00124 write(vfp, &amp;offset, 4);
+00125 write(vfp, &amp;size, 2);
+00126 }
+00127 <font class="keywordflow">else</font> {
+00128 pos = 0;
+00129 tmp = 0;
+00130 write(vfp, &amp;pos, 4);
+00131 write(vfp, &amp;tmp, 2);
+00132 }
+00133 }
+00134 }
+00135
+00136
+00137 <font class="keywordtype">char</font> startentry(<font class="keywordtype">char</font> *buf)
+00138 {
+00139 <font class="keywordtype">char</font> colon = 0;
+00140
+00141 <font class="keywordflow">if</font> (buf[0] != 10)
+00142 <font class="keywordflow">return</font> 0;
+00143 <font class="keywordflow">if</font> (buf[1] != 10)
+00144 <font class="keywordflow">return</font> 0;
+00145 <font class="keywordflow">if</font> (!isdigit(buf[2]))
+00146 <font class="keywordflow">return</font> 0;
+00147 <font class="keywordflow">if</font> (!isdigit(buf[3])) {
+00148 <font class="keywordflow">if</font> (buf[3]!= <font class="charliteral">':'</font>)
+00149 <font class="keywordflow">return</font> 0;
+00150 <font class="keywordflow">else</font> colon++;
+00151 }
+00152 <font class="keywordflow">if</font> (!isdigit(buf[4])) {
+00153 <font class="keywordflow">if</font> (buf[4]!= <font class="charliteral">':'</font>)
+00154 <font class="keywordflow">return</font> 0;
+00155 <font class="keywordflow">else</font> colon++;
+00156 }
+00157 <font class="keywordflow">if</font> (colon != 1)
+00158 <font class="keywordflow">return</font> 0;
+00159 <font class="keywordflow">return</font> 1;
+00160 }
+00161
+00162
+00163 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">short</font> *size)
+00164 {
+00165 <font class="keywordtype">char</font> buf[7];
+00166 <font class="keywordtype">char</font> buf2[20];
+00167 <font class="keywordtype">char</font> ch;
+00168 <font class="keywordtype">char</font> loop;
+00169 <font class="keywordtype">long</font> offset2;
+00170 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00171
+00172 memset(buf, <font class="charliteral">' '</font>, 7);
+00173
+00174 <font class="keywordflow">while</font> (1) {
+00175 <font class="keywordflow">if</font> (startentry(buf)) {
+00176 buf[0] = <font class="charliteral">' '</font>;
+00177 buf[1] = <font class="charliteral">' '</font>;
+00178 sscanf(buf, <font class="stringliteral">"%d:%d"</font>, num1, num2);
+00179 *rangemax = *num2;
+00180 *offset = lseek(fp, 0, SEEK_CUR) - 5;
+00181 <font class="keywordflow">if</font> (size) {
+00182 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00183 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00184 }
+00185 <font class="keywordflow">else</font> {
+00186 <font class="keywordflow">if</font> (vs2) {
+00187 *size = (offset2 - (*offset)) - 2;
+00188 }
+00189 <font class="keywordflow">else</font> {
+00190 *size = (offset2 - (*offset)) - 6;
+00191 }
+00192 }
+00193 lseek(fp, *offset, SEEK_SET);
+00194 }
+00195 <font class="keywordflow">return</font> 0;
+00196 }
+00197
+00198 <font class="keywordflow">if</font> (!strncmp(buf, <font class="stringliteral">"$-$-$-"</font>, 6)) {
+00199 *offset = lseek(fp, 0, SEEK_CUR) - 1;
+00200 *num2 = 0;
+00201 (*num1)++;
+00202 printf(<font class="stringliteral">"Book marker: %s\n"</font>, buf2);
+00203 <font class="keywordflow">if</font> (size) {
+00204 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00205 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00206 }
+00207 <font class="keywordflow">else</font> {
+00208 <font class="keywordflow">if</font> (vs2) {
+00209 *size = (offset2 - (*offset)) - 2;
+00210 }
+00211 <font class="keywordflow">else</font> {
+00212 *size = (offset2 - (*offset)) - 6;
+00213 }
+00214 }
+00215 lseek(fp, *offset, SEEK_SET);
+00216 }
+00217 <font class="keywordflow">return</font> 0;
+00218 }
+00219
+00220
+00221 memmove(buf, &amp;buf[1], 6);
+00222 <font class="keywordflow">if</font> (read(fp, &amp;buf[6], 1) != 1)
+00223 <font class="keywordflow">return</font> 1;
+00224 }
+00225 }
+00226
+00227
+00228 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname)
+00229 {
+00230 <font class="keywordtype">char</font> buf[255];
+00231
+00232 <font class="keywordflow">if</font> ((fp = open(fname, O_RDONLY)) == -1) {
+00233 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00234 exit(1);
+00235 }
+00236
+00237 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00238 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00239 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00240 exit(1);
+00241 }
+00242
+00243 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00244 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00245 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00246 exit(1);
+00247 }
+00248
+00249 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00250 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00251 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00252 exit(1);
+00253 }
+00254 }
+00255
+00256
+00257 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00258 {
+00259 <font class="keywordflow">if</font> (argc &lt; 2) {
+00260 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt - for new testmt file]\n"</font>, argv[0]);
+00261 exit(1);
+00262 }
+00263 <font class="keywordflow">if</font> (argc == 3)
+00264 key1 = key2 = key3 = <font class="stringliteral">"Matthew 1:1"</font>;
+00265 <font class="keywordflow">else</font> key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00266 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rwprtf_8cpp-source.html b/doc/api-documentation/html/rwprtf_8cpp-source.html
new file mode 100644
index 0000000..9e0cd27
--- /dev/null
+++ b/doc/api-documentation/html/rwprtf_8cpp-source.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rwprtf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rwprtf.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * rwprtf - SWFilter decendant to convert all GBF tags to RTF tags</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;rwprtf.h&gt;</font>
+00010
+00011
+00012 RWPRTF::RWPRTF() {
+00013
+00014 }
+00015
+00016
+00017 <font class="keywordtype">char</font> RWPRTF::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00018 {
+00019 <font class="keywordtype">char</font> *to, *from;
+00020 <font class="keywordtype">bool</font> ingreek = <font class="keyword">false</font>;
+00021 <font class="keywordtype">bool</font> inverse = <font class="keyword">false</font>;
+00022 <font class="keywordtype">int</font> len;
+00023
+00024 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00025 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00026 memmove(&amp;text[maxlen - len], text, len);
+00027 from = &amp;text[maxlen - len];
+00028 }
+00029 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00030 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00031 <font class="keywordflow">if</font> (*from == <font class="charliteral">'\\'</font>) {
+00032 <font class="keywordflow">if</font>(!ingreek) {
+00033 ingreek = <font class="keyword">true</font>;
+00034 *to++ = <font class="charliteral">'['</font>;
+00035 *to++ = <font class="charliteral">'{'</font>;
+00036 *to++ = <font class="charliteral">'\\'</font>;
+00037 *to++ = <font class="charliteral">'f'</font>;
+00038 *to++ = <font class="charliteral">'8'</font>;
+00039 *to++ = <font class="charliteral">' '</font>;
+00040 <font class="keywordflow">continue</font>;
+00041 }
+00042 <font class="keywordflow">else</font> {
+00043 ingreek = <font class="keyword">false</font>;
+00044 *to++ = <font class="charliteral">'}'</font>;
+00045 *to++ = <font class="charliteral">']'</font>;
+00046 <font class="keywordflow">continue</font>;
+00047 }
+00048 }
+00049
+00050 <font class="keywordflow">if</font> ((ingreek) &amp;&amp; ((*from == <font class="charliteral">'h'</font>) || (*from == <font class="charliteral">'H'</font>)))
+00051 <font class="keywordflow">continue</font>; <font class="comment">// 'h's are mostly useless in RWP translitterations. The greek is more correct without them.</font>
+00052
+00053 <font class="keywordflow">if</font> (*from == <font class="charliteral">'#'</font>) { <font class="comment">// verse markings (e.g. "#Mark 1:1|")</font>
+00054 inverse = <font class="keyword">true</font>;
+00055 *to++ = <font class="charliteral">'{'</font>;
+00056 *to++ = <font class="charliteral">'\\'</font>;
+00057 *to++ = <font class="charliteral">'c'</font>;
+00058 *to++ = <font class="charliteral">'f'</font>;
+00059 *to++ = <font class="charliteral">'2'</font>;
+00060 *to++ = <font class="charliteral">' '</font>;
+00061 *to++ = <font class="charliteral">'#'</font>;
+00062 <font class="keywordflow">continue</font>;
+00063 }
+00064 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'|'</font>) &amp;&amp; (inverse)) {
+00065 inverse = <font class="keyword">false</font>;
+00066 *to++ = <font class="charliteral">'|'</font>;
+00067 *to++ = <font class="charliteral">'}'</font>;
+00068 <font class="keywordflow">continue</font>;
+00069 }
+00070
+00071 <font class="keywordflow">if</font> (*from == <font class="charliteral">'{'</font>) {
+00072 *to++ = <font class="charliteral">'{'</font>;
+00073 *to++ = <font class="charliteral">'\\'</font>;
+00074 *to++ = <font class="charliteral">'b'</font>;
+00075 *to++ = <font class="charliteral">' '</font>;
+00076 <font class="keywordflow">if</font> ((from - &amp;text[maxlen - len]) &gt; 10) { <font class="comment">// not the beginning of the entry</font>
+00077 *to++ = <font class="charliteral">'\\'</font>;
+00078 *to++ = <font class="charliteral">'p'</font>;
+00079 *to++ = <font class="charliteral">'a'</font>;
+00080 *to++ = <font class="charliteral">'r'</font>;
+00081 *to++ = <font class="charliteral">' '</font>;
+00082 }
+00083 <font class="keywordflow">continue</font>;
+00084 }
+00085
+00086 <font class="keywordflow">if</font> (*from == <font class="charliteral">'}'</font>) {
+00087 <font class="comment">// this is kinda neat... DO NOTHING</font>
+00088 }
+00089 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'\n'</font>) &amp;&amp; (from[1] == <font class="charliteral">'\n'</font>)) {
+00090 *to++ = <font class="charliteral">'\\'</font>;
+00091 *to++ = <font class="charliteral">'p'</font>;
+00092 *to++ = <font class="charliteral">'a'</font>;
+00093 *to++ = <font class="charliteral">'r'</font>;
+00094 *to++ = <font class="charliteral">'\\'</font>;
+00095 *to++ = <font class="charliteral">'p'</font>;
+00096 *to++ = <font class="charliteral">'a'</font>;
+00097 *to++ = <font class="charliteral">'r'</font>;
+00098 *to++ = <font class="charliteral">' '</font>;
+00099 <font class="keywordflow">continue</font>;
+00100 }
+00101
+00102 *to++ = *from;
+00103 }
+00104 *to++ = 0;
+00105 *to = 0;
+00106 <font class="keywordflow">return</font> 0;
+00107 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/rwprtf_8h-source.html b/doc/api-documentation/html/rwprtf_8h-source.html
new file mode 100644
index 0000000..dcee3df
--- /dev/null
+++ b/doc/api-documentation/html/rwprtf_8h-source.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rwprtf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rwprtf.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rwprtf.h - definition of Class RWPRTF, an SWFilter used to convert</font>
+00003 <font class="comment"> * special tags in Robertsons Word Pictures commentary into</font>
+00004 <font class="comment"> * Rich Text Format tags</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * $Id: rwprtf_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00009 <font class="comment"> * CrossWire Bible Society</font>
+00010 <font class="comment"> * P. O. Box 2528</font>
+00011 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00014 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00015 <font class="comment"> * Free Software Foundation version 2.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00018 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00019 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00020 <font class="comment"> * General Public License for more details.</font>
+00021 <font class="comment"> *</font>
+00022 <font class="comment"> */</font>
+00023
+00024 <font class="preprocessor">#ifndef RWPRTF_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define RWPRTF_H</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+<a name="l00033"></a><a class="code" href="class_r_w_p_r_t_f.html">00033</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_r_w_p_r_t_f.html">RWPRTF</a>:<font class="keyword">public</font> SWFilter
+00034 {
+00035 <font class="keyword">public</font>:
+00036 <a class="code" href="class_r_w_p_r_t_f.html">RWPRTF</a> ();
+00037 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00038 };
+00039
+00040 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/sapphire_8cpp-source.html b/doc/api-documentation/html/sapphire_8cpp-source.html
new file mode 100644
index 0000000..d76c79c
--- /dev/null
+++ b/doc/api-documentation/html/sapphire_8cpp-source.html
@@ -0,0 +1,242 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>sapphire.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>sapphire.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/* sapphire.cpp -- the Saphire II stream cipher class.</font>
+00002 <font class="comment"> Dedicated to the Public Domain the author and inventor:</font>
+00003 <font class="comment"> (Michael Paul Johnson). This code comes with no warranty.</font>
+00004 <font class="comment"> Use it at your own risk.</font>
+00005 <font class="comment"> Ported from the Pascal implementation of the Sapphire Stream</font>
+00006 <font class="comment"> Cipher 9 December 1994.</font>
+00007 <font class="comment"> Added hash pre- and post-processing 27 December 1994.</font>
+00008 <font class="comment"> Modified initialization to make index variables key dependent,</font>
+00009 <font class="comment"> made the output function more resistant to cryptanalysis,</font>
+00010 <font class="comment"> and renamed to Sapphire II 2 January 1995</font>
+00011 <font class="comment">*/</font>
+00012
+00013
+00014 <font class="preprocessor">#ifdef WIN32</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#include &lt;memory.h&gt;</font>
+00016 <font class="preprocessor">#endif</font>
+00017 <font class="preprocessor"></font>
+00018 <font class="preprocessor">#ifdef UNIX</font>
+00019 <font class="preprocessor"></font><font class="preprocessor">#include &lt;memory.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00021 <font class="preprocessor">#else</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#ifndef _MSC_VER</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#include &lt;mem.h&gt;</font>
+00024 <font class="preprocessor">#endif</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#ifdef _WIN32_WCE</font>
+00028 <font class="preprocessor"></font><font class="preprocessor">#include &lt;string.h&gt;</font>
+00029 <font class="preprocessor">#endif</font>
+00030 <font class="preprocessor"></font>
+00031 <font class="preprocessor">#include "sapphire.h"</font>
+00032
+00033 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> sapphire::keyrand(<font class="keywordtype">int</font> limit,
+00034 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *user_key,
+00035 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> keysize,
+00036 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *rsum,
+00037 <font class="keywordtype">unsigned</font> *keypos)
+00038 {
+00039 <font class="keywordtype">unsigned</font> u, <font class="comment">// Value from 0 to limit to return.</font>
+00040 retry_limiter, <font class="comment">// No infinite loops allowed.</font>
+00041 mask; <font class="comment">// Select just enough bits.</font>
+00042
+00043 <font class="keywordflow">if</font> (!limit) <font class="keywordflow">return</font> 0; <font class="comment">// Avoid divide by zero error.</font>
+00044 retry_limiter = 0;
+00045 mask = 1; <font class="comment">// Fill mask with enough bits to cover</font>
+00046 <font class="keywordflow">while</font> (mask &lt; (unsigned)limit) <font class="comment">// the desired range.</font>
+00047 mask = (mask &lt;&lt; 1) + 1;
+00048 <font class="keywordflow">do</font>
+00049 {
+00050 *rsum = cards[*rsum] + user_key[(*keypos)++];
+00051 <font class="keywordflow">if</font> (*keypos &gt;= keysize)
+00052 {
+00053 *keypos = 0; <font class="comment">// Recycle the user key.</font>
+00054 *rsum += keysize; <font class="comment">// key "aaaa" != key "aaaaaaaa"</font>
+00055 }
+00056 u = mask &amp; *rsum;
+00057 <font class="keywordflow">if</font> (++retry_limiter &gt; 11)
+00058 u %= limit; <font class="comment">// Prevent very rare long loops.</font>
+00059 }
+00060 <font class="keywordflow">while</font> (u &gt; (unsigned)limit);
+00061 <font class="keywordflow">return</font> u;
+00062 }
+00063
+00064 <font class="keywordtype">void</font> sapphire::initialize(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *key, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> keysize)
+00065 {
+00066 <font class="comment">// Key size may be up to 256 bytes.</font>
+00067 <font class="comment">// Pass phrases may be used directly, with longer length</font>
+00068 <font class="comment">// compensating for the low entropy expected in such keys.</font>
+00069 <font class="comment">// Alternatively, shorter keys hashed from a pass phrase or</font>
+00070 <font class="comment">// generated randomly may be used. For random keys, lengths</font>
+00071 <font class="comment">// of from 4 to 16 bytes are recommended, depending on how</font>
+00072 <font class="comment">// secure you want this to be.</font>
+00073
+00074 <font class="keywordtype">int</font> i;
+00075 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> toswap, swaptemp, rsum;
+00076 <font class="keywordtype">unsigned</font> keypos;
+00077
+00078 <font class="comment">// If we have been given no key, assume the default hash setup.</font>
+00079
+00080 <font class="keywordflow">if</font> (keysize &lt; 1)
+00081 {
+00082 hash_init();
+00083 <font class="keywordflow">return</font>;
+00084 }
+00085
+00086 <font class="comment">// Start with cards all in order, one of each.</font>
+00087
+00088 <font class="keywordflow">for</font> (i=0;i&lt;256;i++)
+00089 cards[i] = i;
+00090
+00091 <font class="comment">// Swap the card at each position with some other card.</font>
+00092
+00093 toswap = 0;
+00094 keypos = 0; <font class="comment">// Start with first byte of user key.</font>
+00095 rsum = 0;
+00096 <font class="keywordflow">for</font> (i=255;i&gt;=0;i--)
+00097 {
+00098 toswap = keyrand(i, key, keysize, &amp;rsum, &amp;keypos);
+00099 swaptemp = cards[i];
+00100 cards[i] = cards[toswap];
+00101 cards[toswap] = swaptemp;
+00102 }
+00103
+00104 <font class="comment">// Initialize the indices and data dependencies.</font>
+00105 <font class="comment">// Indices are set to different values instead of all 0</font>
+00106 <font class="comment">// to reduce what is known about the state of the cards</font>
+00107 <font class="comment">// when the first byte is emitted.</font>
+00108
+00109 rotor = cards[1];
+00110 ratchet = cards[3];
+00111 avalanche = cards[5];
+00112 last_plain = cards[7];
+00113 last_cipher = cards[rsum];
+00114
+00115 toswap = swaptemp = rsum = 0;
+00116 keypos = 0;
+00117 }
+00118
+00119 <font class="keywordtype">void</font> sapphire::hash_init(<font class="keywordtype">void</font>)
+00120 {
+00121 <font class="comment">// This function is used to initialize non-keyed hash</font>
+00122 <font class="comment">// computation.</font>
+00123
+00124 <font class="keywordtype">int</font> i, j;
+00125
+00126 <font class="comment">// Initialize the indices and data dependencies.</font>
+00127
+00128 rotor = 1;
+00129 ratchet = 3;
+00130 avalanche = 5;
+00131 last_plain = 7;
+00132 last_cipher = 11;
+00133
+00134 <font class="comment">// Start with cards all in inverse order.</font>
+00135
+00136 <font class="keywordflow">for</font> (i=0, j=255;i&lt;256;i++,j--)
+00137 cards[i] = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) j;
+00138 }
+00139
+00140 sapphire::sapphire(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *key, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> keysize)
+00141 {
+00142 <font class="keywordflow">if</font> (key &amp;&amp; keysize)
+00143 initialize(key, keysize);
+00144 }
+00145
+00146 <font class="keywordtype">void</font> sapphire::burn(<font class="keywordtype">void</font>)
+00147 {
+00148 <font class="comment">// Destroy the key and state information in RAM.</font>
+00149 memset(cards, 0, 256);
+00150 rotor = ratchet = avalanche = last_plain = last_cipher = 0;
+00151 }
+00152
+00153 sapphire::~sapphire()
+00154 {
+00155 burn();
+00156 }
+00157
+00158 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> sapphire::encrypt(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> b)
+00159 {
+00160 <font class="preprocessor">#ifdef USBINARY</font>
+00161 <font class="preprocessor"></font> <font class="comment">// Picture a single enigma rotor with 256 positions, rewired</font>
+00162 <font class="comment">// on the fly by card-shuffling.</font>
+00163
+00164 <font class="comment">// This cipher is a variant of one invented and written</font>
+00165 <font class="comment">// by Michael Paul Johnson in November, 1993.</font>
+00166
+00167 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> swaptemp;
+00168
+00169 <font class="comment">// Shuffle the deck a little more.</font>
+00170
+00171 ratchet += cards[rotor++];
+00172 swaptemp = cards[last_cipher];
+00173 cards[last_cipher] = cards[ratchet];
+00174 cards[ratchet] = cards[last_plain];
+00175 cards[last_plain] = cards[rotor];
+00176 cards[rotor] = swaptemp;
+00177 avalanche += cards[swaptemp];
+00178
+00179 <font class="comment">// Output one byte from the state in such a way as to make it</font>
+00180 <font class="comment">// very hard to figure out which one you are looking at.</font>
+00181
+00182 last_cipher = b^cards[(cards[ratchet] + cards[rotor]) &amp; 0xFF] ^
+00183 cards[cards[(cards[last_plain] +
+00184 cards[last_cipher] +
+00185 cards[avalanche])&amp;0xFF]];
+00186 last_plain = b;
+00187 <font class="keywordflow">return</font> last_cipher;
+00188 <font class="preprocessor">#else</font>
+00189 <font class="preprocessor"></font> <font class="keywordflow">return</font> b;
+00190 <font class="preprocessor">#endif</font>
+00191 <font class="preprocessor"></font> }
+00192
+00193 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> sapphire::decrypt(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> b)
+00194 {
+00195 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> swaptemp;
+00196
+00197 <font class="comment">// Shuffle the deck a little more.</font>
+00198
+00199 ratchet += cards[rotor++];
+00200 swaptemp = cards[last_cipher];
+00201 cards[last_cipher] = cards[ratchet];
+00202 cards[ratchet] = cards[last_plain];
+00203 cards[last_plain] = cards[rotor];
+00204 cards[rotor] = swaptemp;
+00205 avalanche += cards[swaptemp];
+00206
+00207 <font class="comment">// Output one byte from the state in such a way as to make it</font>
+00208 <font class="comment">// very hard to figure out which one you are looking at.</font>
+00209
+00210 last_plain = b^cards[(cards[ratchet] + cards[rotor]) &amp; 0xFF] ^
+00211 cards[cards[(cards[last_plain] +
+00212 cards[last_cipher] +
+00213 cards[avalanche])&amp;0xFF]];
+00214 last_cipher = b;
+00215 <font class="keywordflow">return</font> last_plain;
+00216 }
+00217
+00218 <font class="keywordtype">void</font> sapphire::hash_final(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *hash, <font class="comment">// Destination</font>
+00219 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> hashlength) <font class="comment">// Size of hash.</font>
+00220 {
+00221 <font class="keywordtype">int</font> i;
+00222
+00223 <font class="keywordflow">for</font> (i=255;i&gt;=0;i--)
+00224 encrypt((<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>) i);
+00225 <font class="keywordflow">for</font> (i=0;i&lt;hashlength;i++)
+00226 hash[i] = encrypt(0);
+00227 }
+00228
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/sapphire_8h-source.html b/doc/api-documentation/html/sapphire_8h-source.html
new file mode 100644
index 0000000..f36c275
--- /dev/null
+++ b/doc/api-documentation/html/sapphire_8h-source.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>sapphire.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>sapphire.h</h1><div class="fragment"><pre>00001 <font class="comment">/* sapphire.h -- Interface for the Saphire II stream cipher.</font>
+00002 <font class="comment"></font>
+00003 <font class="comment"> Dedicated to the Public Domain the author and inventor</font>
+00004 <font class="comment"> (Michael Paul Johnson). This code comes with no warranty.</font>
+00005 <font class="comment"> Use it at your own risk.</font>
+00006 <font class="comment"> Ported from the Pascal implementation of the Sapphire Stream</font>
+00007 <font class="comment"> Cipher 9 December 1994.</font>
+00008 <font class="comment"> Added hash-specific functions 27 December 1994.</font>
+00009 <font class="comment"> Made index variable initialization key-dependent,</font>
+00010 <font class="comment"> made the output function more resistant to cryptanalysis,</font>
+00011 <font class="comment"> and renamed to Sapphire II Stream Cipher 2 January 1995.</font>
+00012 <font class="comment"></font>
+00013 <font class="comment"> unsigned char is assumed to be 8 bits. If it is not, the</font>
+00014 <font class="comment"> results of assignments need to be reduced to 8 bits with</font>
+00015 <font class="comment"> &amp; 0xFF or % 0x100, whichever is faster.</font>
+00016 <font class="comment">*/</font>
+00017
+00018 <font class="preprocessor">#ifndef NULL</font>
+00019 <font class="preprocessor"></font><font class="preprocessor">#define NULL 0</font>
+00020 <font class="preprocessor"></font><font class="preprocessor">#endif </font><font class="comment">/* */</font>
+00021 <font class="keyword">class </font>sapphire
+00022 {
+00023
+00024 <font class="comment">// These variables comprise the state of the state machine.</font>
+00025 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> cards[256]; <font class="comment">// A permutation of 0-255.</font>
+00026 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> rotor, <font class="comment">// Index that rotates smoothly</font>
+00027 ratchet, <font class="comment">// Index that moves erratically</font>
+00028 avalanche, <font class="comment">// Index heavily data dependent</font>
+00029 last_plain, <font class="comment">// Last plain text byte</font>
+00030 last_cipher; <font class="comment">// Last cipher text byte</font>
+00031
+00032 <font class="comment">// This function is used by initialize(), which is called by the</font>
+00033 <font class="comment">// constructor.</font>
+00034 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> keyrand (<font class="keywordtype">int</font> limit, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *user_key,
+00035 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> keysize, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *rsum,
+00036 <font class="keywordtype">unsigned</font> *keypos); <font class="keyword">public</font>:sapphire (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>
+00037 *key = NULL, <font class="comment">// Calls initialize if a real</font>
+00038 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> keysize = 0); <font class="comment">// key is provided. If none</font>
+00039 <font class="comment">// is provided, call initialize</font>
+00040 <font class="comment">// before encrypt or decrypt.</font>
+00041 ~sapphire (); <font class="comment">// Destroy cipher state information.</font>
+00042 <font class="keywordtype">void</font> initialize (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *key, <font class="comment">// User key is used to set</font>
+00043 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> keysize); <font class="comment">// up state information.</font>
+00044 <font class="keywordtype">void</font> hash_init (<font class="keywordtype">void</font>); <font class="comment">// Set up default hash.</font>
+00045 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> encrypt (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> b = 0); <font class="comment">// Encrypt byte</font>
+00046 <font class="comment">// or get a random byte.</font>
+00047 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> decrypt (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> b); <font class="comment">// Decrypt byte.</font>
+00048 <font class="keywordtype">void</font> hash_final (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *hash, <font class="comment">// Copy hash value to hash</font>
+00049 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> hashlength = 20); <font class="comment">// Hash length (16-32)</font>
+00050 <font class="keywordtype">void</font> burn (<font class="keywordtype">void</font>); <font class="comment">// Destroy cipher state information.</font>
+00051 };
+00052
+00053
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/scsuutf8_8cpp-source.html b/doc/api-documentation/html/scsuutf8_8cpp-source.html
new file mode 100644
index 0000000..4d58df3
--- /dev/null
+++ b/doc/api-documentation/html/scsuutf8_8cpp-source.html
@@ -0,0 +1,234 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>scsuutf8.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>scsuutf8.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * SCSUUTF8 - SWFilter decendant to convert a SCSU character to UTF-8</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="comment">/* This class is based on:</font>
+00009 <font class="comment"> * http://czyborra.com/scsu/scsu.c written by Roman Czyborra@dds.nl</font>
+00010 <font class="comment"> * on Andrea's balcony in North Amsterdam on 1998-08-04</font>
+00011 <font class="comment"> * Thanks to Richard Verhoeven &lt;rcb5@win.tue.nl&gt; for his suggestion</font>
+00012 <font class="comment"> * to correct the haphazard "if" after UQU to "else if" on 1998-10-01</font>
+00013 <font class="comment"> * </font>
+00014 <font class="comment"> * This is a deflator to UTF-8 output for input compressed in SCSU,</font>
+00015 <font class="comment"> * the (Reuters) Standard Compression Scheme for Unicode as described</font>
+00016 <font class="comment"> * in http://www.unicode.org/unicode/reports/tr6.html</font>
+00017 <font class="comment"> */</font>
+00018
+00019 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00022
+00023 <font class="preprocessor">#include &lt;scsuutf8.h&gt;</font>
+00024
+00025 SCSUUTF8::SCSUUTF8() {
+00026 }
+00027
+00028
+00029 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>* SCSUUTF8::UTF8Output(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> uchar, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>* text)
+00030 {
+00031 <font class="comment">/* join UTF-16 surrogates without any pairing sanity checks */</font>
+00032
+00033 <font class="keyword">static</font> <font class="keywordtype">int</font> d;
+00034
+00035 <font class="keywordflow">if</font> (uchar &gt;= 0xd800 &amp;&amp; uchar &lt;= 0xdbff) { d = uchar &amp; 0x3f; <font class="keywordflow">return</font> text; }
+00036 <font class="keywordflow">if</font> (uchar &gt;= 0xdc00 &amp;&amp; uchar &lt;= 0xdfff) { uchar = uchar + 0x2400 + d * 0x400; }
+00037
+00038 <font class="comment">/* output one character as UTF-8 multibyte sequence */</font>
+00039
+00040 <font class="keywordflow">if</font> (uchar &lt; 0x80) {
+00041 *text++ = c;
+00042 }
+00043 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (uchar &lt; 0x800) {
+00044 *text++ = 0xc0 | uchar &gt;&gt; 6;
+00045 *text++ = 0x80 | uchar &amp; 0x3f;
+00046 }
+00047 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (uchar &lt; 0x10000) {
+00048 *text++ = 0xe0 | uchar &gt;&gt; 12;
+00049 *text++ = 0x80 | uchar &gt;&gt; 6 &amp; 0x3f;
+00050 *text++ = 0x80 | uchar &amp; 0x3f;
+00051 }
+00052 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (uchar &lt; 0x200000) {
+00053 *text++ = 0xf0 | uchar &gt;&gt; 18;
+00054 *text++ = 0x80 | uchar &gt;&gt; 12 &amp; 0x3f;
+00055 *text++ = 0x80 | uchar &gt;&gt; 6 &amp; 0x3f;
+00056 *text++ = 0x80 | uchar &amp; 0x3f;
+00057 }
+00058
+00059 <font class="keywordflow">return</font> text;
+00060 }
+00061
+00062 <font class="keywordtype">char</font> SCSUUTF8::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> len, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00063 {
+00064 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from;
+00065 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> buflen = len * FILTERPAD;
+00066 <font class="keywordtype">char</font> active = 0, mode = 0;
+00067
+00068 <font class="keyword">static</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> start[8] = {0x0000,0x0080,0x0100,0x0300,0x2000,0x2080,0x2100,0x3000};
+00069 <font class="keyword">static</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> slide[8] = {0x0080,0x00C0,0x0400,0x0600,0x0900,0x3040,0x30A0,0xFF00};
+00070 <font class="keyword">static</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> win[256] = {
+00071 0x0000, 0x0080, 0x0100, 0x0180, 0x0200, 0x0280, 0x0300, 0x0380,
+00072 0x0400, 0x0480, 0x0500, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
+00073 0x0800, 0x0880, 0x0900, 0x0980, 0x0A00, 0x0A80, 0x0B00, 0x0B80,
+00074 0x0C00, 0x0C80, 0x0D00, 0x0D80, 0x0E00, 0x0E80, 0x0F00, 0x0F80,
+00075 0x1000, 0x1080, 0x1100, 0x1180, 0x1200, 0x1280, 0x1300, 0x1380,
+00076 0x1400, 0x1480, 0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780,
+00077 0x1800, 0x1880, 0x1900, 0x1980, 0x1A00, 0x1A80, 0x1B00, 0x1B80,
+00078 0x1C00, 0x1C80, 0x1D00, 0x1D80, 0x1E00, 0x1E80, 0x1F00, 0x1F80,
+00079 0x2000, 0x2080, 0x2100, 0x2180, 0x2200, 0x2280, 0x2300, 0x2380,
+00080 0x2400, 0x2480, 0x2500, 0x2580, 0x2600, 0x2680, 0x2700, 0x2780,
+00081 0x2800, 0x2880, 0x2900, 0x2980, 0x2A00, 0x2A80, 0x2B00, 0x2B80,
+00082 0x2C00, 0x2C80, 0x2D00, 0x2D80, 0x2E00, 0x2E80, 0x2F00, 0x2F80,
+00083 0x3000, 0x3080, 0x3100, 0x3180, 0x3200, 0x3280, 0x3300, 0x3800,
+00084 0xE000, 0xE080, 0xE100, 0xE180, 0xE200, 0xE280, 0xE300, 0xE380,
+00085 0xE400, 0xE480, 0xE500, 0xE580, 0xE600, 0xE680, 0xE700, 0xE780,
+00086 0xE800, 0xE880, 0xE900, 0xE980, 0xEA00, 0xEA80, 0xEB00, 0xEB80,
+00087 0xEC00, 0xEC80, 0xED00, 0xED80, 0xEE00, 0xEE80, 0xEF00, 0xEF80,
+00088 0xF000, 0xF080, 0xF100, 0xF180, 0xF200, 0xF280, 0xF300, 0xF380,
+00089 0xF400, 0xF480, 0xF500, 0xF580, 0xF600, 0xF680, 0xF700, 0xF780,
+00090 0xF800, 0xF880, 0xF900, 0xF980, 0xFA00, 0xFA80, 0xFB00, 0xFB80,
+00091 0xFC00, 0xFC80, 0xFD00, 0xFD80, 0xFE00, 0xFE80, 0xFF00, 0xFF80,
+00092 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00093 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00094 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00095 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00096 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00097 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00098 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00099 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00100 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00101 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+00102 0x0000, 0x00C0, 0x0250, 0x0370, 0x0530, 0x3040, 0x30A0, 0xFF60
+00103 };
+00104
+00105 <font class="keywordflow">if</font> (!len)
+00106 <font class="keywordflow">return</font> 0;
+00107
+00108 memmove(&amp;text[buflen - len], text, len);
+00109 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)&amp;text[buflen - len];
+00110 to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)text;
+00111
+00112 <font class="comment">// -------------------------------</font>
+00113
+00114 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; len;) {
+00115
+00116
+00117 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00118 c = from[i++];
+00119
+00120 <font class="keywordflow">if</font> (c &gt;= 0x80)
+00121 {
+00122 to = UTF8Output (c - 0x80 + slide[active], to);
+00123 }
+00124 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c &gt;= 0x20 &amp;&amp; c &lt;= 0x7F)
+00125 {
+00126 to = UTF8Output (c, to);
+00127 }
+00128 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c == 0x0 || c == 0x9 || c == 0xA || c == 0xC || c == 0xD)
+00129 {
+00130 to = UTF8Output (c, to);
+00131 }
+00132 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c &gt;= 0x1 &amp;&amp; c &lt;= 0x8) <font class="comment">/* SQn */</font>
+00133 {
+00134 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00135 <font class="comment">/* single quote */</font> d = from[i++];
+00136
+00137 to = UTF8Output (d &lt; 0x80 ? d + start [c - 0x1] :
+00138 d - 0x80 + slide [c - 0x1], to);
+00139 }
+00140 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c &gt;= 0x10 &amp;&amp; c &lt;= 0x17) <font class="comment">/* SCn */</font>
+00141 {
+00142 <font class="comment">/* change window */</font> active = c - 0x10;
+00143 }
+00144 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c &gt;= 0x18 &amp;&amp; c &lt;= 0x1F) <font class="comment">/* SDn */</font>
+00145 {
+00146 <font class="comment">/* define window */</font> active = c - 0x18;
+00147 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00148 slide [active] = win [from[i++]];
+00149 }
+00150 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c == 0xB) <font class="comment">/* SDX */</font>
+00151 {
+00152 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00153 c = from[i++];
+00154
+00155 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00156 d = from[i++];
+00157
+00158 slide [active = c&gt;&gt;5] = 0x10000 + (((c &amp; 0x1F) &lt;&lt; 8 | d) &lt;&lt; 7);
+00159 }
+00160 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c == 0xE) <font class="comment">/* SQU */</font>
+00161 {
+00162 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00163 <font class="comment">/* SQU */</font> c = from[i++];
+00164
+00165 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00166 to = UTF8Output (c &lt;&lt; 8 | from[i++], to);
+00167 }
+00168 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c == 0xF) <font class="comment">/* SCU */</font>
+00169 {
+00170 <font class="comment">/* change to Unicode mode */</font> mode = 1;
+00171
+00172 <font class="keywordflow">while</font> (mode)
+00173 {
+00174 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00175 c = from[i++];
+00176
+00177 <font class="keywordflow">if</font> (c &lt;= 0xDF || c &gt;= 0xF3)
+00178 {
+00179 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00180 to = UTF8Output (c &lt;&lt; 8 | from[i++], to);
+00181 }
+00182 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c == 0xF0) <font class="comment">/* UQU */</font>
+00183 {
+00184 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00185 c = from[i++];
+00186
+00187 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00188 to = UTF8Output (c &lt;&lt; 8 | from[i++], to);
+00189 }
+00190 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c &gt;= 0xE0 &amp;&amp; c &lt;= 0xE7) <font class="comment">/* UCn */</font>
+00191 {
+00192 active = c - 0xE0; mode = 0;
+00193 }
+00194 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c &gt;= 0xE8 &amp;&amp; c &lt;= 0xEF) <font class="comment">/* UDn */</font>
+00195 {
+00196 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00197 slide [active=c-0xE8] = win [from[i++]]; mode = 0;
+00198 }
+00199 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (c == 0xF1) <font class="comment">/* UDX */</font>
+00200 {
+00201 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00202 c = from[i++];
+00203
+00204 <font class="keywordflow">if</font> (i &gt;= len) <font class="keywordflow">break</font>;
+00205 d = from[i++];
+00206
+00207 slide [active = c&gt;&gt;5] =
+00208 0x10000 + (((c &amp; 0x1F) &lt;&lt; 8 | d) &lt;&lt; 7); mode = 0;
+00209 }
+00210 }
+00211 }
+00212
+00213
+00214 }
+00215
+00216 *to++ = 0;
+00217 *to = 0;
+00218 <font class="keywordflow">return</font> 0;
+00219 }
+00220
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/scsuutf8_8h-source.html b/doc/api-documentation/html/scsuutf8_8h-source.html
new file mode 100644
index 0000000..b01f044
--- /dev/null
+++ b/doc/api-documentation/html/scsuutf8_8h-source.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>scsuutf8.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>scsuutf8.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef SCSUUTF8_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define SCSUUTF8_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_s_c_s_u_u_t_f8.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>:<font class="keyword">public</font> SWFilter {
+00030 <font class="keyword">private</font>:
+00031 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>* UTF8Output(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>* text);
+00032
+00033 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> c, d;
+00034
+00035
+00036 <font class="keyword">public</font>:
+00037 <a class="code" href="class_s_c_s_u_u_t_f8.html">SCSUUTF8</a>();
+00038 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00039 };
+00040
+00041 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/strkey_8cpp-source.html b/doc/api-documentation/html/strkey_8cpp-source.html
new file mode 100644
index 0000000..87a6389
--- /dev/null
+++ b/doc/api-documentation/html/strkey_8cpp-source.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>strkey.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>strkey.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * StrKey.cpp - code for class 'StrKey'- a standard string key class (used</font>
+00003 <font class="comment"> * for modules that index on single strings (eg. cities,</font>
+00004 <font class="comment"> * names, words, etc.)</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;swmacs.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;strkey.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00012
+00013
+00014 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *classes[] = {<font class="stringliteral">"StrKey"</font>, <font class="stringliteral">"SWKey"</font>, <font class="stringliteral">"SWObject"</font>, 0};
+00015 <a class="code" href="class_s_w_class.html">SWClass</a> StrKey::classdef(classes);
+00016
+00017 <font class="comment">/******************************************************************************</font>
+00018 <font class="comment"> * StrKey Constructor - initializes instance of StrKey</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> * ENT: ikey - text key (word, city, name, etc.)</font>
+00021 <font class="comment"> */</font>
+00022
+<a name="l00023"></a><a class="code" href="class_str_key.html#a0">00023</a> <a class="code" href="class_str_key.html#a0">StrKey::StrKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey) : <a class="code" href="class_s_w_key.html">SWKey</a>(ikey)
+00024 {
+00025 init();
+00026 }
+00027
+00028
+00029 <font class="keywordtype">void</font> StrKey::init() {
+00030 myclass = &amp;classdef;
+00031 }
+00032
+00033
+00034 <font class="comment">/******************************************************************************</font>
+00035 <font class="comment"> * StrKey Destructor - cleans up instance of StrKey</font>
+00036 <font class="comment"> *</font>
+00037 <font class="comment"> * ENT: ikey - text key</font>
+00038 <font class="comment"> */</font>
+00039
+<a name="l00040"></a><a class="code" href="class_str_key.html#a1">00040</a> <a class="code" href="class_str_key.html#a1">StrKey::~StrKey</a>() {
+00041 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/strkey_8h-source.html b/doc/api-documentation/html/strkey_8h-source.html
new file mode 100644
index 0000000..c9ab793
--- /dev/null
+++ b/doc/api-documentation/html/strkey_8h-source.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>strkey.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>strkey.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * strkey.h - code for class 'strkey'- a standard Biblical verse key</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: strkey_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022
+00023 <font class="preprocessor">#ifndef STRKEY_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define STRKEY_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swmacs.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+<a name="l00035"></a><a class="code" href="class_str_key.html">00035</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_str_key.html">StrKey</a>:<font class="keyword">public</font> <a class="code" href="class_s_w_key.html">SWKey</a>
+00036 {
+00037 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
+00038 <font class="keywordtype">void</font> init ();
+00039 <font class="keyword">public</font>:
+00044 <a class="code" href="class_str_key.html">StrKey</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey = 0);
+00047 <font class="keyword">virtual</font> ~ StrKey ();
+00048
+00049 SWKEY_OPERATORS
+00050
+00051 };
+00052
+00053
+00054 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swbasicfilter_8cpp-source.html b/doc/api-documentation/html/swbasicfilter_8cpp-source.html
new file mode 100644
index 0000000..db03790
--- /dev/null
+++ b/doc/api-documentation/html/swbasicfilter_8cpp-source.html
@@ -0,0 +1,314 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swbasicfilter.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swbasicfilter.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swbasicfilter.h - definition of class SWBasicFilter. An SWFilter</font>
+00003 <font class="comment"> * impl that provides some basic methods that</font>
+00004 <font class="comment"> * many filters will need and can use as a starting</font>
+00005 <font class="comment"> * point. </font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * $Id: swbasicfilter_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00010 <font class="comment"> * CrossWire Bible Society</font>
+00011 <font class="comment"> * P. O. Box 2528</font>
+00012 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00015 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00016 <font class="comment"> * Free Software Foundation version 2.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00019 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00020 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00021 <font class="comment"> * General Public License for more details.</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> */</font>
+00024
+00025 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swbasicfilter.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00029 <font class="preprocessor">#include &lt;stdarg.h&gt;</font>
+00030
+00031 SWBasicFilter::SWBasicFilter() {
+00032 tokenStart = 0;
+00033 tokenEnd = 0;
+00034 escStart = 0;
+00035 escEnd = 0;
+00036
+00037 setTokenStart(<font class="stringliteral">"&lt;"</font>);
+00038 setTokenEnd(<font class="stringliteral">"&gt;"</font>);
+00039 setEscapeStart(<font class="stringliteral">"&amp;"</font>);
+00040 setEscapeEnd(<font class="stringliteral">";"</font>);
+00041
+00042 escStringCaseSensitive = <font class="keyword">false</font>;
+00043 tokenCaseSensitive = <font class="keyword">false</font>;
+00044 passThruUnknownToken = <font class="keyword">false</font>;
+00045 passThruUnknownEsc = <font class="keyword">false</font>;
+00046 }
+00047
+00048
+<a name="l00049"></a><a class="code" href="class_s_w_basic_filter.html#b4">00049</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_basic_filter.html#b4">SWBasicFilter::setPassThruUnknownToken</a>(<font class="keywordtype">bool</font> val) {
+00050 passThruUnknownToken = val;
+00051 }
+00052
+00053
+<a name="l00054"></a><a class="code" href="class_s_w_basic_filter.html#b5">00054</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_basic_filter.html#b5">SWBasicFilter::setPassThruUnknownEscapeString</a>(<font class="keywordtype">bool</font> val) {
+00055 passThruUnknownEsc = val;
+00056 }
+00057
+00058
+00059 <font class="keywordtype">void</font> SWBasicFilter::setTokenCaseSensitive(<font class="keywordtype">bool</font> val) {
+00060 tokenCaseSensitive = val;
+00061 }
+00062
+00063
+00064 <font class="keywordtype">void</font> SWBasicFilter::setEscapeStringCaseSensitive(<font class="keywordtype">bool</font> val) {
+00065 escStringCaseSensitive = val;
+00066 }
+00067
+00068
+00069 SWBasicFilter::~SWBasicFilter() {
+00070 <font class="keywordflow">if</font> (tokenStart)
+00071 <font class="keyword">delete</font> [] tokenStart;
+00072
+00073 <font class="keywordflow">if</font> (tokenEnd)
+00074 <font class="keyword">delete</font> [] tokenEnd;
+00075
+00076 <font class="keywordflow">if</font> (escStart)
+00077 <font class="keyword">delete</font> [] escStart;
+00078
+00079 <font class="keywordflow">if</font> (escEnd)
+00080 <font class="keyword">delete</font> [] escEnd;
+00081 }
+00082
+00083
+00084 <font class="keywordtype">void</font> SWBasicFilter::addTokenSubstitute(<font class="keyword">const</font> <font class="keywordtype">char</font> *findString, <font class="keyword">const</font> <font class="keywordtype">char</font> *replaceString) {
+00085 <font class="keywordtype">char</font> *buf = 0;
+00086
+00087 <font class="keywordflow">if</font> (!tokenCaseSensitive) {
+00088 stdstr(&amp;buf, findString);
+00089 toupperstr(buf);
+00090 tokenSubMap.insert(DualStringMap::value_type(buf, replaceString));
+00091 <font class="keyword">delete</font> [] buf;
+00092 }
+00093 <font class="keywordflow">else</font> tokenSubMap.insert(DualStringMap::value_type(findString, replaceString));
+00094 }
+00095
+00096
+00097 <font class="keywordtype">void</font> SWBasicFilter::addEscapeStringSubstitute(<font class="keyword">const</font> <font class="keywordtype">char</font> *findString, <font class="keyword">const</font> <font class="keywordtype">char</font> *replaceString) {
+00098 <font class="keywordtype">char</font> *buf = 0;
+00099
+00100 <font class="keywordflow">if</font> (!escStringCaseSensitive) {
+00101 stdstr(&amp;buf, findString);
+00102 toupperstr(buf);
+00103 escSubMap.insert(DualStringMap::value_type(buf, replaceString));
+00104 <font class="keyword">delete</font> [] buf;
+00105 }
+00106 <font class="keywordflow">else</font> escSubMap.insert(DualStringMap::value_type(findString, replaceString));
+00107 }
+00108
+00109
+<a name="l00110"></a><a class="code" href="class_s_w_basic_filter.html#b12">00110</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_basic_filter.html#b12">SWBasicFilter::pushString</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...) {
+00111 va_list argptr;
+00112
+00113 va_start(argptr, format);
+00114 *buf += vsprintf(*buf, format, argptr);
+00115 va_end(argptr);
+00116
+00117 <font class="comment">// *buf += strlen(*buf);</font>
+00118 }
+00119
+00120
+00121 <font class="keywordtype">bool</font> SWBasicFilter::substituteToken(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token) {
+00122 DualStringMap::iterator it;
+00123
+00124 <font class="keywordflow">if</font> (!tokenCaseSensitive) {
+00125 <font class="keywordtype">char</font> *tmp = 0;
+00126 stdstr(&amp;tmp, token);
+00127 toupperstr(tmp);
+00128 it = tokenSubMap.find(tmp);
+00129 <font class="keyword">delete</font> [] tmp;
+00130 } <font class="keywordflow">else</font>
+00131 it = tokenSubMap.find(token);
+00132
+00133 <font class="keywordflow">if</font> (it != tokenSubMap.end()) {
+00134 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, it-&gt;second.c_str());
+00135 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00136 }
+00137 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00138 }
+00139
+00140
+00141 <font class="keywordtype">bool</font> SWBasicFilter::substituteEscapeString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *escString) {
+00142 DualStringMap::iterator it;
+00143
+00144 <font class="keywordflow">if</font> (!escStringCaseSensitive) {
+00145 <font class="keywordtype">char</font> *tmp = 0;
+00146 stdstr(&amp;tmp, escString);
+00147 toupperstr(tmp);
+00148 it = escSubMap.find(tmp);
+00149 <font class="keyword">delete</font> [] tmp;
+00150 } <font class="keywordflow">else</font>
+00151 it = escSubMap.find(escString);
+00152
+00153 <font class="keywordflow">if</font> (it != escSubMap.end()) {
+00154 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, it-&gt;second.c_str());
+00155 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00156 }
+00157 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00158 }
+00159
+00160
+<a name="l00161"></a><a class="code" href="class_s_w_basic_filter.html#b13">00161</a> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_basic_filter.html#b13">SWBasicFilter::handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData) {
+00162 <font class="keywordflow">return</font> substituteToken(buf, token);
+00163 }
+00164
+00165
+<a name="l00166"></a><a class="code" href="class_s_w_basic_filter.html#b14">00166</a> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_basic_filter.html#b14">SWBasicFilter::handleEscapeString</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *escString, DualStringMap &amp;userData) {
+00167 <font class="keywordflow">return</font> substituteEscapeString(buf, escString);
+00168 }
+00169
+00170
+<a name="l00171"></a><a class="code" href="class_s_w_basic_filter.html#b0">00171</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_basic_filter.html#b0">SWBasicFilter::setEscapeStart</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *escStart) {
+00172 stdstr(&amp;(this-&gt;escStart), escStart);
+00173 }
+00174
+00175
+<a name="l00176"></a><a class="code" href="class_s_w_basic_filter.html#b1">00176</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_basic_filter.html#b1">SWBasicFilter::setEscapeEnd</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *escEnd) {
+00177 stdstr(&amp;(this-&gt;escEnd), escEnd);
+00178 }
+00179
+00180
+<a name="l00181"></a><a class="code" href="class_s_w_basic_filter.html#b2">00181</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_basic_filter.html#b2">SWBasicFilter::setTokenStart</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *tokenStart) {
+00182 stdstr(&amp;(this-&gt;tokenStart), tokenStart);
+00183 }
+00184
+00185
+<a name="l00186"></a><a class="code" href="class_s_w_basic_filter.html#b3">00186</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_basic_filter.html#b3">SWBasicFilter::setTokenEnd</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *tokenEnd) {
+00187 stdstr(&amp;(this-&gt;tokenEnd), tokenEnd);
+00188 }
+00189
+00190
+00191 <font class="keywordtype">char</font> SWBasicFilter::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module) {
+00192 this-&gt;key = key;
+00193 this-&gt;module = module;
+00194 <font class="keywordtype">char</font> *to, *from, token[4096];
+00195 <font class="keywordtype">int</font> tokpos = 0;
+00196 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00197 <font class="keywordtype">int</font> len;
+00198 <font class="keywordtype">bool</font> inEsc = <font class="keyword">false</font>;
+00199 <font class="keywordtype">char</font> escStartLen = strlen(escStart);
+00200 <font class="keywordtype">char</font> escEndLen = strlen(escEnd);
+00201 <font class="keywordtype">char</font> escStartPos = 0, escEndPos = 0;
+00202 <font class="keywordtype">char</font> tokenStartLen = strlen(tokenStart);
+00203 <font class="keywordtype">char</font> tokenEndLen = strlen(tokenEnd);
+00204 <font class="keywordtype">char</font> tokenStartPos = 0, tokenEndPos = 0;
+00205 DualStringMap userData;
+00206 string lastTextNode;
+00207
+00208 <font class="keywordtype">bool</font> suspendTextPassThru = <font class="keyword">false</font>;
+00209 userData[<font class="stringliteral">"suspendTextPassThru"</font>] = <font class="stringliteral">"false"</font>;
+00210
+00211 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00212 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00213 memmove(&amp;text[maxlen - len], text, len);
+00214 from = &amp;text[maxlen - len];
+00215 }
+00216 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00217
+00218 resultBuffer = text;
+00219
+00220 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00221 <font class="keywordflow">if</font> (*from == tokenStart[tokenStartPos]) {
+00222 <font class="keywordflow">if</font> (tokenStartPos == (tokenStartLen - 1)) {
+00223 intoken = <font class="keyword">true</font>;
+00224 tokpos = 0;
+00225 token[0] = 0;
+00226 token[1] = 0;
+00227 token[2] = 0;
+00228 inEsc = <font class="keyword">false</font>;
+00229 }
+00230 <font class="keywordflow">else</font> tokenStartPos++;
+00231 <font class="keywordflow">continue</font>;
+00232 }
+00233
+00234 <font class="keywordflow">if</font> (*from == escStart[escStartPos]) {
+00235 <font class="keywordflow">if</font> (escStartPos == (escStartLen - 1)) {
+00236 intoken = <font class="keyword">true</font>;
+00237 tokpos = 0;
+00238 token[0] = 0;
+00239 token[1] = 0;
+00240 token[2] = 0;
+00241 inEsc = <font class="keyword">true</font>;
+00242 }
+00243 <font class="keywordflow">else</font> escStartPos++;
+00244 <font class="keywordflow">continue</font>;
+00245 }
+00246
+00247 <font class="keywordflow">if</font> (inEsc) {
+00248 <font class="keywordflow">if</font> (*from == escEnd[escEndPos]) {
+00249 <font class="keywordflow">if</font> (escEndPos == (escEndLen - 1)) {
+00250 intoken = <font class="keyword">false</font>;
+00251 userData[<font class="stringliteral">"lastTextNode"</font>] = lastTextNode;
+00252 <font class="keywordflow">if</font> ((!<a class="code" href="class_s_w_basic_filter.html#b14">handleEscapeString</a>(&amp;to, token, userData)) &amp;&amp; (passThruUnknownEsc)) {
+00253 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(&amp;to, escStart);
+00254 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(&amp;to, token);
+00255 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(&amp;to, escEnd);
+00256 }
+00257 escEndPos = escStartPos = tokenEndPos = tokenStartPos = 0;
+00258 lastTextNode = <font class="stringliteral">""</font>;
+00259 suspendTextPassThru = (!userData[<font class="stringliteral">"suspendTextPassThru"</font>].compare(<font class="stringliteral">"true"</font>));
+00260 <font class="keywordflow">continue</font>;
+00261 }
+00262 }
+00263 }
+00264
+00265 <font class="keywordflow">if</font> (!inEsc) {
+00266 <font class="keywordflow">if</font> (*from == tokenEnd[tokenEndPos]) {
+00267 <font class="keywordflow">if</font> (tokenEndPos == (tokenEndLen - 1)) {
+00268 intoken = <font class="keyword">false</font>;
+00269 userData[<font class="stringliteral">"lastTextNode"</font>] = lastTextNode;
+00270 <font class="keywordflow">if</font> ((!<a class="code" href="class_s_w_basic_filter.html#b13">handleToken</a>(&amp;to, token, userData)) &amp;&amp; (passThruUnknownToken)) {
+00271 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(&amp;to, tokenStart);
+00272 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(&amp;to, token);
+00273 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(&amp;to, tokenEnd);
+00274 }
+00275 escEndPos = escStartPos = tokenEndPos = tokenStartPos = 0;
+00276 lastTextNode = <font class="stringliteral">""</font>;
+00277 suspendTextPassThru = (!userData[<font class="stringliteral">"suspendTextPassThru"</font>].compare(<font class="stringliteral">"true"</font>));
+00278 <font class="keywordflow">continue</font>;
+00279 }
+00280 }
+00281 }
+00282
+00283 <font class="keywordflow">if</font> (intoken) {
+00284 <font class="keywordflow">if</font> (tokpos &lt; 4090)
+00285 token[tokpos++] = *from;
+00286 token[tokpos+2] = 0;
+00287 }
+00288 <font class="keywordflow">else</font> {
+00289 <font class="keywordflow">if</font> (!suspendTextPassThru)
+00290 *to++ = *from;
+00291 lastTextNode += *from;
+00292 }
+00293 }
+00294 *to++ = 0;
+00295 *to = 0;
+00296 <font class="keywordflow">return</font> 0;
+00297 }
+00298
+00299
+00300
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swbasicfilter_8h-source.html b/doc/api-documentation/html/swbasicfilter_8h-source.html
new file mode 100644
index 0000000..6732ca5
--- /dev/null
+++ b/doc/api-documentation/html/swbasicfilter_8h-source.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swbasicfilter.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swbasicfilter.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swbasicfilter.h - definition of class SWBasicFilter. An SWFilter</font>
+00003 <font class="comment"> * impl that provides some basic methods that</font>
+00004 <font class="comment"> * many filter will need and can use as a starting</font>
+00005 <font class="comment"> * point. </font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * $Id: swbasicfilter_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00010 <font class="comment"> * CrossWire Bible Society</font>
+00011 <font class="comment"> * P. O. Box 2528</font>
+00012 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00015 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00016 <font class="comment"> * Free Software Foundation version 2.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00019 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00020 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00021 <font class="comment"> * General Public License for more details.</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> */</font>
+00024
+00025 <font class="preprocessor">#ifndef SWBASICFILTER_H</font>
+00026 <font class="preprocessor"></font><font class="preprocessor">#define SWBASICFILTER_H</font>
+00027 <font class="preprocessor"></font>
+00028 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031 <font class="preprocessor">#include &lt;map&gt;</font>
+00032 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00033
+<a name="l00045"></a><a class="code" href="class_s_w_basic_filter.html">00045</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_basic_filter.html">SWBasicFilter</a> : <font class="keyword">public</font> SWFilter {
+00046
+00047 <font class="keywordtype">char</font> *tokenStart;
+00048 <font class="keywordtype">char</font> *tokenEnd;
+00049 <font class="keywordtype">char</font> *escStart;
+00050 <font class="keywordtype">char</font> *escEnd;
+00051 <font class="keywordtype">bool</font> escStringCaseSensitive;
+00052 <font class="keywordtype">bool</font> tokenCaseSensitive;
+00053 <font class="keywordtype">bool</font> passThruUnknownToken;
+00054 <font class="keywordtype">bool</font> passThruUnknownEsc;
+00055
+00056 <font class="keyword">public</font>:
+00057 <a class="code" href="class_s_w_basic_filter.html">SWBasicFilter</a>();
+00058 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00059 <font class="keyword">virtual</font> ~<a class="code" href="class_s_w_basic_filter.html">SWBasicFilter</a>();
+00060
+00061 <font class="keyword">protected</font>:
+00062 <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module;
+00063 <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key;
+00064 <font class="keywordtype">char</font> *resultBuffer;
+00065 <font class="keyword">typedef</font> map&lt;string, string&gt; DualStringMap;
+00066 DualStringMap tokenSubMap;
+00067 DualStringMap escSubMap;
+00068
+00070 <font class="keywordtype">void</font> setEscapeStart(<font class="keyword">const</font> <font class="keywordtype">char</font> *escStart);
+00071
+00073 <font class="keywordtype">void</font> setEscapeEnd(<font class="keyword">const</font> <font class="keywordtype">char</font> *escEnd);
+00074
+00076 <font class="keywordtype">void</font> setTokenStart(<font class="keyword">const</font> <font class="keywordtype">char</font> *tokenStart);
+00077
+00079 <font class="keywordtype">void</font> setTokenEnd(<font class="keyword">const</font> <font class="keywordtype">char</font> *tokenEnd);
+00080
+00083 <font class="keywordtype">void</font> setPassThruUnknownToken(<font class="keywordtype">bool</font> val);
+00084
+00087 <font class="keywordtype">void</font> setPassThruUnknownEscapeString(<font class="keywordtype">bool</font> val);
+00088
+00089 <font class="keywordtype">void</font> setTokenCaseSensitive(<font class="keywordtype">bool</font> val);
+00090 <font class="keywordtype">void</font> setEscapeStringCaseSensitive(<font class="keywordtype">bool</font> val);
+00091
+00092 <font class="keywordtype">void</font> addTokenSubstitute(<font class="keyword">const</font> <font class="keywordtype">char</font> *findString, <font class="keyword">const</font> <font class="keywordtype">char</font> *replaceString);
+00093 <font class="keywordtype">void</font> addEscapeStringSubstitute(<font class="keyword">const</font> <font class="keywordtype">char</font> *findString, <font class="keyword">const</font> <font class="keywordtype">char</font> *replaceString);
+00094 <font class="keywordtype">bool</font> substituteToken(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token);
+00095 <font class="keywordtype">bool</font> substituteEscapeString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *escString);
+00096
+00098 <font class="keywordtype">void</font> pushString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...);
+00099
+00106 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> handleToken(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData);
+00107
+00114 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> handleEscapeString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *escString, DualStringMap &amp;userData);
+00115 };
+00116
+00117 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcacher_8cpp-source.html b/doc/api-documentation/html/swcacher_8cpp-source.html
new file mode 100644
index 0000000..f3cfb7d
--- /dev/null
+++ b/doc/api-documentation/html/swcacher_8cpp-source.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcacher.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcacher.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcacher.h - definition of class SWCacher used to provide an interface for</font>
+00003 <font class="comment"> * objects that cache and want a standard interface for cleaning up.</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swcacher_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#include &lt;swcacher.h&gt;</font>
+00024
+00025
+00026 SWCacher::SWCacher() {
+00027 }
+00028
+00029
+00030 SWCacher::~SWCacher() {
+00031 }
+00032
+00033
+00034 <font class="keywordtype">void</font> SWCacher::flush() {
+00035 }
+00036
+00037 <font class="keywordtype">long</font> SWCacher::resourceConsumption() {
+00038 <font class="keywordflow">return</font> 0;
+00039 }
+00040
+00041 <font class="keywordtype">long</font> SWCacher::lastAccess() {
+00042 <font class="keywordflow">return</font> 0;
+00043 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcacher_8h-source.html b/doc/api-documentation/html/swcacher_8h-source.html
new file mode 100644
index 0000000..de6b15b
--- /dev/null
+++ b/doc/api-documentation/html/swcacher_8h-source.html
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcacher.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcacher.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcacher.h - definition of class SWCacher used to provide an interface for</font>
+00003 <font class="comment"> * objects that cache and want a standard interface for cleaning up.</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swcacher_8h-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWCACHER_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWCACHER_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+00028 <font class="keyword">class </font>SWDLLEXPORT SWCacher {
+00029 <font class="keyword">public</font>:
+00030 SWCacher();
+00031 <font class="keyword">virtual</font> ~SWCacher();
+00032 <font class="keyword">virtual</font> <font class="keywordtype">void</font> flush();
+00033 <font class="keyword">virtual</font> <font class="keywordtype">long</font> resourceConsumption();
+00034 <font class="keyword">virtual</font> <font class="keywordtype">long</font> lastAccess();
+00035 };
+00036
+00037 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcipher_8cpp-source.html b/doc/api-documentation/html/swcipher_8cpp-source.html
new file mode 100644
index 0000000..736a676
--- /dev/null
+++ b/doc/api-documentation/html/swcipher_8cpp-source.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcipher.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcipher.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcipher.cpp - code for class 'SWCipher'- a driver class that provides</font>
+00003 <font class="comment"> * cipher utilities.</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;swcipher.h&gt;</font>
+00009
+00010
+00011 <font class="comment">/******************************************************************************</font>
+00012 <font class="comment"> * SWCipher Constructor - Initializes data for instance of SWCipher</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> */</font>
+00015
+00016 SWCipher::SWCipher(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *key) {
+00017 master.initialize(key, strlen((<font class="keywordtype">char</font> *)key));
+00018 buf = 0;
+00019 }
+00020
+00021
+00022 <font class="comment">/******************************************************************************</font>
+00023 <font class="comment"> * SWCipher Destructor - Cleans up instance of SWCipher</font>
+00024 <font class="comment"> */</font>
+00025
+00026 SWCipher::~SWCipher()
+00027 {
+00028 <font class="keywordflow">if</font> (buf)
+00029 free(buf);
+00030 }
+00031
+00032
+00033 <font class="keywordtype">char</font> *SWCipher::Buf(<font class="keyword">const</font> <font class="keywordtype">char</font> *ibuf, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> ilen)
+00034 {
+00035 <font class="keywordflow">if</font> (ibuf) {
+00036
+00037 <font class="keywordflow">if</font> (buf)
+00038 free(buf);
+00039
+00040 <font class="keywordflow">if</font> (!ilen) {
+00041 len = strlen(buf);
+00042 ilen = len + 1;
+00043 }
+00044 <font class="keywordflow">else</font> len = ilen;
+00045
+00046 buf = (<font class="keywordtype">char</font> *) malloc(ilen);
+00047 memcpy(buf, ibuf, ilen);
+00048 cipher = <font class="keyword">false</font>;
+00049 }
+00050
+00051 Decode();
+00052
+00053 <font class="keywordflow">return</font> buf;
+00054 }
+00055
+00056
+00057 <font class="keywordtype">char</font> *SWCipher::cipherBuf(<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> *ilen, <font class="keyword">const</font> <font class="keywordtype">char</font> *ibuf)
+00058 {
+00059 <font class="keywordflow">if</font> (ibuf) {
+00060
+00061 <font class="keywordflow">if</font> (buf)
+00062 free(buf);
+00063
+00064 buf = (<font class="keywordtype">char</font> *) malloc(*ilen);
+00065 memcpy(buf, ibuf, *ilen);
+00066 len = *ilen;
+00067 cipher = <font class="keyword">true</font>;
+00068 }
+00069
+00070 Encode();
+00071
+00072 *ilen = (short)len;
+00073 <font class="keywordflow">return</font> buf;
+00074 }
+00075
+00076
+00077 <font class="comment">/******************************************************************************</font>
+00078 <font class="comment"> * SWCipher::Encode - This function "encodes" the input stream into the</font>
+00079 <font class="comment"> * output stream.</font>
+00080 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00081 <font class="comment"> * used to separate this method from the actual</font>
+00082 <font class="comment"> * i/o.</font>
+00083 <font class="comment"> */</font>
+00084
+00085 <font class="keywordtype">void</font> SWCipher::Encode(<font class="keywordtype">void</font>)
+00086 {
+00087 <font class="keywordflow">if</font> (!cipher) {
+00088 work = master;
+00089 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; len; i++)
+00090 buf[i] = work.encrypt(buf[i]);
+00091 cipher = <font class="keyword">true</font>;
+00092 }
+00093 }
+00094
+00095
+00096 <font class="comment">/******************************************************************************</font>
+00097 <font class="comment"> * SWCipher::Decode - This function "decodes" the input stream into the</font>
+00098 <font class="comment"> * output stream.</font>
+00099 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00100 <font class="comment"> * used to separate this method from the actual</font>
+00101 <font class="comment"> * i/o.</font>
+00102 <font class="comment"> */</font>
+00103
+00104 <font class="keywordtype">void</font> SWCipher::Decode(<font class="keywordtype">void</font>)
+00105 {
+00106 <font class="keywordflow">if</font> (cipher) {
+00107 work = master;
+00108 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; len; i++)
+00109 buf[i] = work.decrypt(buf[i]);
+00110 cipher = <font class="keyword">false</font>;
+00111 }
+00112 }
+00113
+00114
+00115 <font class="comment">/******************************************************************************</font>
+00116 <font class="comment"> * SWCipher::setCipherKey - setter for a new CipherKey</font>
+00117 <font class="comment"> *</font>
+00118 <font class="comment"> */</font>
+00119
+00120 <font class="keywordtype">void</font> SWCipher::setCipherKey(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey) {
+00121 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *key = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *)ikey;
+00122 master.initialize(key, strlen((<font class="keywordtype">char</font> *)key));
+00123 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcipher_8h-source.html b/doc/api-documentation/html/swcipher_8h-source.html
new file mode 100644
index 0000000..0f54984
--- /dev/null
+++ b/doc/api-documentation/html/swcipher_8h-source.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcipher.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcipher.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcipher.h - definition of Class SWCipher used for data cipher/decipher</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: swcipher_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1999 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef SWCIPHER_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define SWCIPHER_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include "sapphire.h"</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+00029 <font class="keyword">class </font>SWDLLEXPORT SWCipher
+00030 {
+00031
+00032 sapphire master;
+00033 sapphire work;
+00034
+00035 <font class="keywordtype">char</font> *buf;
+00036 <font class="keywordtype">bool</font> cipher;
+00037 <font class="keywordtype">int</font> len;
+00038 <font class="keyword">protected</font>:
+00039 <font class="keyword">public</font>:
+00040 SWCipher (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *key);
+00041 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setCipherKey (<font class="keyword">const</font> <font class="keywordtype">char</font> *key);
+00042 <font class="keyword">virtual</font> ~ SWCipher ();
+00043 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *Buf (<font class="keyword">const</font> <font class="keywordtype">char</font> *buf = 0, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> len = 0);
+00044 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *cipherBuf (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> *len, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf = 0);
+00045 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Encode (<font class="keywordtype">void</font>);
+00046 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Decode (<font class="keywordtype">void</font>);
+00047 };
+00048
+00049 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcom_8cpp-source.html b/doc/api-documentation/html/swcom_8cpp-source.html
new file mode 100644
index 0000000..869e176
--- /dev/null
+++ b/doc/api-documentation/html/swcom_8cpp-source.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcom.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcom.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcom.cpp - code for base class 'SWCom'- The basis for all commentary</font>
+00003 <font class="comment"> * modules</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;swcom.h&gt;</font>
+00007
+00008
+00009 <font class="comment">/******************************************************************************</font>
+00010 <font class="comment"> * SWCom Constructor - Initializes data for instance of SWCom</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * ENT: imodname - Internal name for module</font>
+00013 <font class="comment"> * imoddesc - Name to display to user for module</font>
+00014 <font class="comment"> * idisp - Display object to use for displaying</font>
+00015 <font class="comment"> */</font>
+00016
+<a name="l00017"></a><a class="code" href="class_s_w_com.html#a0">00017</a> <a class="code" href="class_s_w_com.html#a0">SWCom::SWCom</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang): <a class="code" href="class_s_w_module.html">SWModule</a>(imodname, imoddesc, idisp, "Commentaries", enc, dir, mark, ilang)
+00018 {
+00019 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00020 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_com.html#a2">CreateKey</a>();
+00021 }
+00022
+00023
+00024 <font class="comment">/******************************************************************************</font>
+00025 <font class="comment"> * SWCom Destructor - Cleans up instance of SWCom</font>
+00026 <font class="comment"> */</font>
+00027
+00028 SWCom::~SWCom()
+00029 {
+00030 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcom_8h-source.html b/doc/api-documentation/html/swcom_8h-source.html
new file mode 100644
index 0000000..c587ca9
--- /dev/null
+++ b/doc/api-documentation/html/swcom_8h-source.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcom.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcom.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcom.h - code for base class 'SWCom'. SWCom is the basis for all</font>
+00003 <font class="comment"> * types of commentary modules</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swcom_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWCOM_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWCOM_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+<a name="l00033"></a><a class="code" href="class_s_w_com.html">00033</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_com.html">SWCom</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_module.html">SWModule</a> {
+00034 <font class="keyword">public</font>:
+00035
+00042 <a class="code" href="class_s_w_com.html">SWCom</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding enc = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup mark = FMT_UNKNOWN, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00043 <font class="keyword">virtual</font> ~<a class="code" href="class_s_w_com.html">SWCom</a>();
+<a name="l00044"></a><a class="code" href="class_s_w_com.html#a2">00044</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_module.html#a26">CreateKey</a>()
+00045 {
+00046 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>();
+00047 }
+00048 };
+00049
+00050
+00051 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcomprs_8cpp-source.html b/doc/api-documentation/html/swcomprs_8cpp-source.html
new file mode 100644
index 0000000..1ec5ff7
--- /dev/null
+++ b/doc/api-documentation/html/swcomprs_8cpp-source.html
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcomprs.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcomprs.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcomprs.cpp - code for class 'SWCompress'- a driver class that provides</font>
+00003 <font class="comment"> * compression utilities.</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00009
+00010
+00011 <font class="comment">/******************************************************************************</font>
+00012 <font class="comment"> * SWCompress Constructor - Initializes data for instance of SWCompress</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> */</font>
+00015
+00016 SWCompress::SWCompress()
+00017 {
+00018 buf = zbuf = 0;
+00019 Init();
+00020 }
+00021
+00022
+00023 <font class="comment">/******************************************************************************</font>
+00024 <font class="comment"> * SWCompress Destructor - Cleans up instance of SWCompress</font>
+00025 <font class="comment"> */</font>
+00026
+00027 SWCompress::~SWCompress()
+00028 {
+00029 <font class="keywordflow">if</font> (zbuf)
+00030 free(zbuf);
+00031
+00032 <font class="keywordflow">if</font> (buf)
+00033 free(buf);
+00034 }
+00035
+00036
+00037 <font class="keywordtype">void</font> SWCompress::Init()
+00038 {
+00039 <font class="keywordflow">if</font> (buf)
+00040 free(buf);
+00041
+00042 <font class="keywordflow">if</font> (zbuf)
+00043 free(zbuf);
+00044
+00045 buf = 0;
+00046 zbuf = 0;
+00047 direct = 0;
+00048 zlen = 0;
+00049 slen = 0;
+00050 zpos = 0;
+00051 pos = 0;
+00052 }
+00053
+00054
+00055 <font class="keywordtype">char</font> *SWCompress::Buf(<font class="keyword">const</font> <font class="keywordtype">char</font> *ibuf, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *len) {
+00056 <font class="comment">// setting an uncompressed buffer</font>
+00057 <font class="keywordflow">if</font> (ibuf) {
+00058 Init();
+00059 slen = (len) ? *len : strlen(ibuf);
+00060 buf = (<font class="keywordtype">char</font> *) calloc(slen + 1, 1);
+00061 memcpy(buf, ibuf, slen);
+00062 }
+00063
+00064 <font class="comment">// getting an uncompressed buffer</font>
+00065 <font class="keywordflow">if</font> (!buf) {
+00066 buf = (<font class="keywordtype">char</font> *)calloc(1,1); <font class="comment">// be sure we at least allocate an empty buf for return;</font>
+00067 direct = 1;
+00068 Decode();
+00069 <font class="comment">// slen = strlen(buf);</font>
+00070 <font class="keywordflow">if</font> (len)
+00071 *len = slen;
+00072 }
+00073 <font class="keywordflow">return</font> buf;
+00074 }
+00075
+00076
+00077 <font class="keywordtype">char</font> *SWCompress::zBuf(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *len, <font class="keywordtype">char</font> *ibuf)
+00078 {
+00079 <font class="comment">// setting a compressed buffer</font>
+00080 <font class="keywordflow">if</font> (ibuf) {
+00081 Init();
+00082 zbuf = (<font class="keywordtype">char</font> *) malloc(*len);
+00083 memcpy(zbuf, ibuf, *len);
+00084 zlen = *len;
+00085 }
+00086
+00087 <font class="comment">// getting a compressed buffer</font>
+00088 <font class="keywordflow">if</font> (!zbuf) {
+00089 direct = 0;
+00090 Encode();
+00091 }
+00092
+00093 *len = zlen;
+00094 <font class="keywordflow">return</font> zbuf;
+00095 }
+00096
+00097
+00098 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> SWCompress::GetChars(<font class="keywordtype">char</font> *ibuf, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len)
+00099 {
+00100 <font class="keywordflow">if</font> (direct) {
+00101 len = (((zlen - zpos) &gt; (unsigned)len) ? len : zlen - zpos);
+00102 <font class="keywordflow">if</font> (len &gt; 0) {
+00103 memmove(ibuf, &amp;zbuf[zpos], len);
+00104 zpos += len;
+00105 }
+00106 }
+00107 <font class="keywordflow">else</font> {
+00108 <font class="comment">// slen = strlen(buf);</font>
+00109 len = (((slen - pos) &gt; (unsigned)len) ? len : slen - pos);
+00110 <font class="keywordflow">if</font> (len &gt; 0) {
+00111 memmove(ibuf, &amp;buf[pos], len);
+00112 pos += len;
+00113 }
+00114 }
+00115 <font class="keywordflow">return</font> len;
+00116 }
+00117
+00118
+00119 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> SWCompress::SendChars(<font class="keywordtype">char</font> *ibuf, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len)
+00120 {
+00121 <font class="keywordflow">if</font> (direct) {
+00122 <font class="keywordflow">if</font> (buf) {
+00123 <font class="comment">// slen = strlen(buf);</font>
+00124 <font class="keywordflow">if</font> ((pos + len) &gt; (unsigned)slen) {
+00125 buf = (<font class="keywordtype">char</font> *) realloc(buf, pos + len + 1024);
+00126 memset(&amp;buf[pos], 0, len + 1024);
+00127 }
+00128 }
+00129 <font class="keywordflow">else</font> buf = (<font class="keywordtype">char</font> *)calloc(1, len + 1024);
+00130 memmove(&amp;buf[pos], ibuf, len);
+00131 pos += len;
+00132 }
+00133 <font class="keywordflow">else</font> {
+00134 <font class="keywordflow">if</font> (zbuf) {
+00135 <font class="keywordflow">if</font> ((zpos + len) &gt; zlen) {
+00136 zbuf = (<font class="keywordtype">char</font> *) realloc(zbuf, zpos + len + 1024);
+00137 zlen = zpos + len + 1024;
+00138 }
+00139 }
+00140 <font class="keywordflow">else</font> {
+00141 zbuf = (<font class="keywordtype">char</font> *)calloc(1, len + 1024);
+00142 zlen = len + 1024;
+00143 }
+00144 memmove(&amp;zbuf[zpos], ibuf, len);
+00145 zpos += len;
+00146 }
+00147 <font class="keywordflow">return</font> len;
+00148 }
+00149
+00150
+00151 <font class="comment">/******************************************************************************</font>
+00152 <font class="comment"> * SWCompress::Encode - This function "encodes" the input stream into the</font>
+00153 <font class="comment"> * output stream.</font>
+00154 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00155 <font class="comment"> * used to separate this method from the actual</font>
+00156 <font class="comment"> * i/o.</font>
+00157 <font class="comment"> */</font>
+00158
+00159 <font class="keywordtype">void</font> SWCompress::Encode(<font class="keywordtype">void</font>)
+00160 {
+00161 cycleStream();
+00162 }
+00163
+00164
+00165 <font class="comment">/******************************************************************************</font>
+00166 <font class="comment"> * SWCompress::Decode - This function "decodes" the input stream into the</font>
+00167 <font class="comment"> * output stream.</font>
+00168 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00169 <font class="comment"> * used to separate this method from the actual</font>
+00170 <font class="comment"> * i/o.</font>
+00171 <font class="comment"> */</font>
+00172
+00173 <font class="keywordtype">void</font> SWCompress::Decode(<font class="keywordtype">void</font>)
+00174 {
+00175 cycleStream();
+00176 }
+00177
+00178
+00179 <font class="keywordtype">void</font> SWCompress::cycleStream() {
+00180 <font class="keywordtype">char</font> buf[1024];
+00181 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len, totlen = 0;
+00182
+00183 <font class="keywordflow">do</font> {
+00184 len = GetChars(buf, 1024);
+00185 <font class="keywordflow">if</font> (len)
+00186 totlen += SendChars(buf, len);
+00187 } <font class="keywordflow">while</font> (len == 1024);
+00188
+00189 zlen = slen = totlen;
+00190 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swcomprs_8h-source.html b/doc/api-documentation/html/swcomprs_8h-source.html
new file mode 100644
index 0000000..31e5934
--- /dev/null
+++ b/doc/api-documentation/html/swcomprs_8h-source.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swcomprs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swcomprs.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcomprs.h - definition of Class SWCompress used for data compression</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: swcomprs_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef SWCOMPRS_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define SWCOMPRS_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+00027 <font class="keyword">class </font>SWDLLEXPORT SWCompress
+00028 {
+00029 <font class="keywordtype">void</font> Init ();
+00030 <font class="keywordtype">void</font> cycleStream ();
+00031 <font class="keyword">protected</font>:
+00032 <font class="keywordtype">char</font> *buf, *zbuf, direct; <font class="comment">// 0 - encode; 1 - decode</font>
+00033 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> zlen, zpos, pos, slen;
+00034 <font class="keyword">public</font>:
+00035 SWCompress ();
+00036 <font class="keyword">virtual</font> ~ SWCompress ();
+00037 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *Buf (<font class="keyword">const</font> <font class="keywordtype">char</font> *buf = 0, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *len = 0);
+00038 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *zBuf (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> *len, <font class="keywordtype">char</font> *buf = 0);
+00039 <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> GetChars (<font class="keywordtype">char</font> *buf, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len); <font class="comment">// override for other than buffer compression</font>
+00040 <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> SendChars (<font class="keywordtype">char</font> *buf, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len); <font class="comment">// override for other than buffer compression</font>
+00041 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Encode (<font class="keywordtype">void</font>); <font class="comment">// override to provide compression algorythm</font>
+00042 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Decode (<font class="keywordtype">void</font>); <font class="comment">// override to provide compression algorythm</font>
+00043 };
+00044
+00045 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swconfig_8cpp-source.html b/doc/api-documentation/html/swconfig_8cpp-source.html
new file mode 100644
index 0000000..54093d7
--- /dev/null
+++ b/doc/api-documentation/html/swconfig_8cpp-source.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swconfig.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swconfig.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swconfig.cpp - implementation of Class SWConfig used for saving and</font>
+00003 <font class="comment"> * retrieval of configuration information</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swconfig_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#include &lt;swconfig.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00025
+00026
+<a name="l00027"></a><a class="code" href="class_s_w_config.html#a0">00027</a> <a class="code" href="class_s_w_config.html#a0">SWConfig::SWConfig</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> * ifilename) {
+00028 <a class="code" href="class_s_w_config.html#m0">filename</a> = ifilename;
+00029 <a class="code" href="class_s_w_config.html#a2">Load</a>();
+00030 }
+00031
+00032
+00033 SWConfig::~SWConfig() {
+00034 }
+00035
+00036
+00037 <font class="keywordtype">char</font> SWConfig::getline(FILE *fp, string &amp;line)
+00038 {
+00039 <font class="keywordtype">char</font> retval = 0;
+00040 <font class="keywordtype">char</font> buf[255];
+00041
+00042 line = <font class="stringliteral">""</font>;
+00043
+00044 <font class="keywordflow">while</font> (fgets(buf, 254, fp)) {
+00045 <font class="keywordflow">while</font> (buf[strlen(buf)-1] == <font class="charliteral">'\n'</font> || buf[strlen(buf)-1] == <font class="charliteral">'\r'</font>)
+00046 buf[strlen(buf)-1] = 0;
+00047
+00048 <font class="keywordflow">if</font> (buf[strlen(buf)-1] == <font class="charliteral">'\\'</font>) {
+00049 buf[strlen(buf)-1] = 0;
+00050 line += buf;
+00051 <font class="keywordflow">continue</font>;
+00052 }
+00053 line += buf;
+00054
+00055 <font class="keywordflow">if</font> (strlen(buf) &lt; 253) {
+00056 retval = 1;
+00057 <font class="keywordflow">break</font>;
+00058 }
+00059 }
+00060 <font class="keywordflow">return</font> retval;
+00061 }
+00062
+00063
+<a name="l00064"></a><a class="code" href="class_s_w_config.html#a2">00064</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_config.html#a2">SWConfig::Load</a>() {
+00065 FILE *cfile;
+00066 <font class="keywordtype">char</font> *buf, *data;
+00067 string line;
+00068 ConfigEntMap cursect;
+00069 string sectname;
+00070 <font class="keywordtype">bool</font> first = <font class="keyword">true</font>;
+00071
+00072 <a class="code" href="class_s_w_config.html#m1">Sections</a>.erase(<a class="code" href="class_s_w_config.html#m1">Sections</a>.begin(), <a class="code" href="class_s_w_config.html#m1">Sections</a>.end());
+00073
+00074 <font class="keywordflow">if</font> ((cfile = fopen(<a class="code" href="class_s_w_config.html#m0">filename</a>.c_str(), <font class="stringliteral">"r"</font>))) {
+00075 <font class="keywordflow">while</font> (getline(cfile, line)) {
+00076 buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ line.length() + 1 ];
+00077 strcpy(buf, line.c_str());
+00078 <font class="keywordflow">if</font> (*strstrip(buf) == <font class="charliteral">'['</font>) {
+00079 <font class="keywordflow">if</font> (!first)
+00080 <a class="code" href="class_s_w_config.html#m1">Sections</a>.insert(SectionMap::value_type(sectname, cursect));
+00081 <font class="keywordflow">else</font> first = <font class="keyword">false</font>;
+00082
+00083 cursect.erase(cursect.begin(), cursect.end());
+00084
+00085 strtok(buf, <font class="stringliteral">"]"</font>);
+00086 sectname = buf+1;
+00087 }
+00088 <font class="keywordflow">else</font> {
+00089 strtok(buf, <font class="stringliteral">"="</font>);
+00090 <font class="keywordflow">if</font> ((*buf) &amp;&amp; (*buf != <font class="charliteral">'='</font>)) {
+00091 <font class="keywordflow">if</font> ((data = strtok(NULL, <font class="stringliteral">""</font>)))
+00092 cursect.insert(ConfigEntMap::value_type(buf, strstrip(data)));
+00093 <font class="keywordflow">else</font> cursect.insert(ConfigEntMap::value_type(buf, <font class="stringliteral">""</font>));
+00094 }
+00095 }
+00096 <font class="keyword">delete</font> [] buf;
+00097 }
+00098 <font class="keywordflow">if</font> (!first)
+00099 <a class="code" href="class_s_w_config.html#m1">Sections</a>.insert(SectionMap::value_type(sectname, cursect));
+00100
+00101 fclose(cfile);
+00102 }
+00103 }
+00104
+00105
+<a name="l00106"></a><a class="code" href="class_s_w_config.html#a3">00106</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_config.html#a3">SWConfig::Save</a>() {
+00107 FILE *cfile;
+00108 string buf;
+00109 SectionMap::iterator sit;
+00110 ConfigEntMap::iterator entry;
+00111 string sectname;
+00112
+00113 <font class="keywordflow">if</font> ((cfile = fopen(<a class="code" href="class_s_w_config.html#m0">filename</a>.c_str(), <font class="stringliteral">"w"</font>))) {
+00114
+00115 <font class="keywordflow">for</font> (sit = <a class="code" href="class_s_w_config.html#m1">Sections</a>.begin(); sit != <a class="code" href="class_s_w_config.html#m1">Sections</a>.end(); sit++) {
+00116 buf = <font class="stringliteral">"\n["</font>;
+00117 buf += (*sit).first.c_str();
+00118 buf += <font class="stringliteral">"]\n"</font>;
+00119 fputs(buf.c_str(), cfile);
+00120 <font class="keywordflow">for</font> (entry = (*sit).second.begin(); entry != (*sit).second.end(); entry++) {
+00121 buf = (*entry).first.c_str();
+00122 buf += <font class="stringliteral">"="</font>;
+00123 buf += (*entry).second.c_str();
+00124 buf += <font class="stringliteral">"\n"</font>;
+00125 fputs(buf.c_str(), cfile);
+00126 }
+00127 }
+00128 fputs(<font class="stringliteral">"\n"</font>, cfile); <font class="comment">// so getline will find last line</font>
+00129 fclose(cfile);
+00130 }
+00131 }
+00132
+00133
+<a name="l00134"></a><a class="code" href="class_s_w_config.html#a4">00134</a> <a class="code" href="class_s_w_config.html">SWConfig</a> &amp;<a class="code" href="class_s_w_config.html#a4">SWConfig::operator +=</a>(<a class="code" href="class_s_w_config.html">SWConfig</a> &amp;addFrom)
+00135 {
+00136
+00137 SectionMap::iterator section;
+00138 ConfigEntMap::iterator entry, start, end;
+00139
+00140 <font class="keywordflow">for</font> (section = addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>.begin(); section != addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>.end(); section++) {
+00141 <font class="keywordflow">for</font> (entry = (*section).second.begin(); entry != (*section).second.end(); entry++) {
+00142 start = <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].lower_bound(entry-&gt;first);
+00143 end = <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].upper_bound(entry-&gt;first);
+00144 <font class="keywordflow">if</font> (start != end) {
+00145 <font class="keywordflow">if</font> (((++start) != end)
+00146 || ((++(addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].lower_bound(entry-&gt;first))) != addFrom.<a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first].upper_bound(entry-&gt;first))) {
+00147 <font class="keywordflow">for</font> (--start; start != end; start++) {
+00148 <font class="keywordflow">if</font> (!strcmp(start-&gt;second.c_str(), entry-&gt;second.c_str()))
+00149 <font class="keywordflow">break</font>;
+00150 }
+00151 <font class="keywordflow">if</font> (start == end)
+00152 <a class="code" href="class_s_w_config.html#m1">Sections</a>[(*section).first].insert(ConfigEntMap::value_type((*entry).first, (*entry).second));
+00153 }
+00154 <font class="keywordflow">else</font> <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first][entry-&gt;first.c_str()] = entry-&gt;second.c_str();
+00155 }
+00156 <font class="keywordflow">else</font> <a class="code" href="class_s_w_config.html#m1">Sections</a>[section-&gt;first][entry-&gt;first.c_str()] = entry-&gt;second.c_str();
+00157 }
+00158 }
+00159 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00160 }
+00161
+00162
+<a name="l00163"></a><a class="code" href="class_s_w_config.html#a5">00163</a> ConfigEntMap &amp; <a class="code" href="class_s_w_config.html#a5">SWConfig::operator [] </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *section) {
+00164 <font class="keywordflow">return</font> <a class="code" href="class_s_w_config.html#m1">Sections</a>[section];
+00165 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swconfig_8h-source.html b/doc/api-documentation/html/swconfig_8h-source.html
new file mode 100644
index 0000000..13ed4f7
--- /dev/null
+++ b/doc/api-documentation/html/swconfig_8h-source.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swconfig.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swconfig.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swconfig.h - definition of Class SWConfig used for saving and retrieval</font>
+00003 <font class="comment"> * of configuration information</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swconfig_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWCONFIG_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWCONFIG_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00027
+00028 <font class="preprocessor">#include &lt;string&gt;</font>
+00029 <font class="preprocessor">#include &lt;map&gt;</font>
+00030
+00031 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00032 <font class="preprocessor">#include &lt;multimapwdef.h&gt;</font>
+00033
+00034 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00035
+00036
+00037
+00038 <font class="keyword">typedef</font> multimapwithdefault &lt; string, string, less &lt; string &gt; &gt;ConfigEntMap;
+00039 <font class="keyword">typedef</font> map &lt; string, ConfigEntMap, less &lt; string &gt; &gt;SectionMap;
+00040
+<a name="l00044"></a><a class="code" href="class_s_w_config.html">00044</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_config.html">SWConfig</a>
+00045 {
+00046 <font class="keyword">private</font>:
+00047 <font class="keywordtype">char</font> getline (FILE * fp, string &amp; line);
+00048 <font class="keyword">public</font>:
+<a name="l00052"></a><a class="code" href="class_s_w_config.html#m0">00052</a> string filename;
+<a name="l00056"></a><a class="code" href="class_s_w_config.html#m1">00056</a> SectionMap Sections;
+00057
+00061 <a class="code" href="class_s_w_config.html">SWConfig</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ifilename);
+00062 <font class="keyword">virtual</font> ~ SWConfig ();
+00063
+00067 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Load ();
+00068
+00072 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Save ();
+00073
+00077 <font class="keyword">virtual</font> <a class="code" href="class_s_w_config.html">SWConfig</a> &amp; operator += (<a class="code" href="class_s_w_config.html">SWConfig</a> &amp; addFrom);
+00078
+00088 <font class="keyword">virtual</font> ConfigEntMap &amp; operator [] (<font class="keyword">const</font> <font class="keywordtype">char</font> *section);
+00089 };
+00090
+00091 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swdisp_8cpp-source.html b/doc/api-documentation/html/swdisp_8cpp-source.html
new file mode 100644
index 0000000..274ebd9
--- /dev/null
+++ b/doc/api-documentation/html/swdisp_8cpp-source.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swdisp.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swdisp.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swdisp.cpp - code for base class 'swdisp'. swdisp is the basis for all</font>
+00003 <font class="comment"> * types of displays (e.g. raw textout, curses, xwindow, etc.)</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;iostream.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;swdisp.h&gt;</font>
+00009
+00010 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *classes[] = {<font class="stringliteral">"SWDisplay"</font>, <font class="stringliteral">"SWObject"</font>, 0};
+00011 <a class="code" href="class_s_w_class.html">SWClass</a> SWDisplay::classdef(classes);
+00012
+00013 <font class="comment">/******************************************************************************</font>
+00014 <font class="comment"> * SWDisplay::Display - casts a module to a character pointer and displays it to</font>
+00015 <font class="comment"> * raw output (overriden for different display types and</font>
+00016 <font class="comment"> * module types if necessary)</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> * ENT: imodule - module to display</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> * RET: error status</font>
+00021 <font class="comment"> */</font>
+00022
+<a name="l00023"></a><a class="code" href="class_s_w_display.html#a1">00023</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_display.html#a1">SWDisplay::Display</a>(<a class="code" href="class_s_w_module.html">SWModule</a> &amp;imodule)
+00024 {
+00025 cout &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *)imodule;
+00026 <font class="keywordflow">return</font> 0;
+00027 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swdisp_8h-source.html b/doc/api-documentation/html/swdisp_8h-source.html
new file mode 100644
index 0000000..dc69e95
--- /dev/null
+++ b/doc/api-documentation/html/swdisp_8h-source.html
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swdisp.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swdisp.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swdisp.h - code for base class 'swdisp'. swdisp is the basis for all</font>
+00003 <font class="comment"> * types of displays (e.g. raw textout, curses, xwindow, etc.)</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swdisp_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWDISP_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWDISP_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swobject.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+00029 <font class="keyword">class </font><a class="code" href="class_s_w_module.html">SWModule</a>;
+00030
+<a name="l00034"></a><a class="code" href="class_s_w_display.html">00034</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_display.html">SWDisplay</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_object.html">SWObject</a> {
+00035 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
+00036 <font class="keyword">public</font>:
+00037 <a class="code" href="class_s_w_display.html">SWDisplay</a> () { myclass = &amp;classdef; };
+00045 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Display (<a class="code" href="class_s_w_module.html">SWModule</a> &amp; imodule);
+00046 };
+00047 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swdisprtf_8h-source.html b/doc/api-documentation/html/swdisprtf_8h-source.html
new file mode 100644
index 0000000..9c34102
--- /dev/null
+++ b/doc/api-documentation/html/swdisprtf_8h-source.html
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swdisprtf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swdisprtf.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swdisprtf.h - definition of Class SWDispRTF-- an SWDisplay used to display</font>
+00003 <font class="comment"> * a verse in Rich Text Format.</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swdisprtf_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="comment">//---------------------------------------------------------------------------</font>
+00024 <font class="preprocessor">#ifndef SWDispRTFH</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define SWDispRTFH</font>
+00026 <font class="preprocessor"></font><font class="comment">//---------------------------------------------------------------------------</font>
+00027 <font class="preprocessor">#include &lt;vcl\SysUtils.hpp&gt;</font>
+00028 <font class="preprocessor">#include &lt;vcl\Controls.hpp&gt;</font>
+00029 <font class="preprocessor">#include &lt;vcl\Classes.hpp&gt;</font>
+00030 <font class="preprocessor">#include &lt;vcl\Forms.hpp&gt;</font>
+00031 <font class="preprocessor">#include &lt;vcl\ComCtrls.hpp&gt;</font>
+00032 <font class="preprocessor">#include &lt;vcl\StdCtrls.hpp&gt;</font>
+00033 <font class="preprocessor">#include &lt;swtext.h&gt;</font>
+00034 <font class="preprocessor">#ifndef USEOLDRTF</font>
+00035 <font class="preprocessor"></font><font class="preprocessor">#include &lt;RxRichEdit.hpp&gt;</font>
+00036 <font class="preprocessor">#endif</font>
+00037 <font class="preprocessor"></font><font class="comment">//---------------------------------------------------------------------------</font>
+00038
+00039 <font class="preprocessor">#define defRTFHeader "{\\rtf1\\ansi{\\fonttbl{\\f0\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;} "</font>
+00040 <font class="preprocessor"></font><font class="preprocessor">#define defRTFHeadMargin "{\\fs8\\cf1\\par\\pard} "</font>
+00041 <font class="preprocessor"></font><font class="preprocessor">#define defRTFTrailer "{\\fs%d \\par }}" // 24</font>
+00042 <font class="preprocessor"></font>
+00043 <font class="preprocessor">#define defRTFChapterMarkPre "\\pard \\qc\\nowidctlpar{\\f1\\cf7\\fs%d\\b Chapter " // 30</font>
+00044 <font class="preprocessor"></font><font class="preprocessor">#define defRTFChapterMarkPost "\\par\\fs%d\\par}" // 10</font>
+00045 <font class="preprocessor"></font>
+00046 <font class="preprocessor">#define defRTFVerseMarkPre "{\\fs%d\\cf1\\super " //20</font>
+00047 <font class="preprocessor"></font><font class="preprocessor">#define defRTFVerseMarkPost "}"</font>
+00048 <font class="preprocessor"></font>
+00049 <font class="preprocessor">#define defRTFVersePre "{\\fs%d" // 24</font>
+00050 <font class="preprocessor"></font><font class="preprocessor">#define defRTFVersePost " }"</font>
+00051 <font class="preprocessor"></font>
+00052 <font class="preprocessor">#ifndef USEOLDRTF</font>
+00053 <font class="preprocessor"></font><font class="keyword">class </font>SWDispRTF:<font class="keyword">public</font> TRxRichEdit
+00054 #else
+00055 class SWDispRTF:<font class="keyword">public</font> TRichEdit
+00056 #endif
+00057 {
+00058 <font class="keyword">protected</font>:
+00059
+00060 System::AnsiString FRTFHeader;
+00061 System::AnsiString FRTFHeadMargin;
+00062 System::AnsiString FRTFTrailer;
+00063 System::AnsiString FRTFChapterMarkPre;
+00064 System::AnsiString FRTFChapterMarkPost;
+00065 System::AnsiString FRTFVerseMarkPre;
+00066 System::AnsiString FRTFVerseMarkPost;
+00067 System::AnsiString FRTFVersePre;
+00068 System::AnsiString FRTFVersePost;
+00069 <font class="keywordtype">bool</font> FExpandNewLine;
+00070 CHARRANGE FCharRange;
+00071 <font class="keywordtype">int</font> fontSize;
+00072
+00073 <font class="keywordtype">int</font> __fastcall GetMySelStart ();
+00074 <font class="keywordtype">void</font> __fastcall SetMySelStart (<font class="keywordtype">int</font> iselstart);
+00075 <font class="keywordtype">int</font> __fastcall getFontSize ();
+00076 <font class="keywordtype">void</font> __fastcall setFontSize (<font class="keywordtype">int</font> iFontSize);
+00077 <font class="keywordtype">void</font> recalcHeaders ();
+00078 <font class="keyword">protected</font>:
+00079 TMemoryStream * RTFStream;
+00080
+00081 <font class="keyword">virtual</font> <font class="keywordtype">void</font> __fastcall Loaded (<font class="keywordtype">void</font>);
+00082 <font class="keyword">public</font>:
+00083 __fastcall SWDispRTF (TComponent * Owner);
+00084 __fastcall ~ SWDispRTF ();
+00085
+00086 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Display (<a class="code" href="class_s_w_module.html">SWModule</a> &amp; imodule);
+00087 __published:
+00088 __property System::AnsiString RTFHeader = { read = FRTFHeader, write = FRTFHeader};
+00089 __property System::AnsiString RTFHeadMargin = { read = FRTFHeadMargin, write = FRTFHeadMargin };
+00090 __property System::AnsiString RTFChapterMarkPre = { read = FRTFChapterMarkPre, write = FRTFChapterMarkPre };
+00091 __property System::AnsiString RTFChapterMarkPost = { read = FRTFChapterMarkPost, write = FRTFChapterMarkPost };
+00092 __property System::AnsiString RTFVerseMarkPre = { read = FRTFVerseMarkPre, write = FRTFVerseMarkPre };
+00093 __property System::AnsiString RTFVerseMarkPost = { read = FRTFVerseMarkPost, write = FRTFVerseMarkPost };
+00094 __property System::AnsiString RTFVersePre = { read = FRTFVersePre, write = FRTFVersePre };
+00095 __property System::AnsiString RTFVersePost = { read = FRTFVersePost, write = FRTFVersePost };
+00096 __property System::AnsiString RTFTrailer = { read = FRTFTrailer, write = FRTFTrailer };
+00097 __property <font class="keywordtype">bool</font> ExpandNewLine = { read = FExpandNewLine, write = FExpandNewLine };
+00098 __property <font class="keywordtype">int</font> FontSize = { read = getFontSize, write = setFontSize };
+00099 };
+00100
+00101 <font class="comment">//---------------------------------------------------------------------------</font>
+00102 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swdisprtfchap_8h-source.html b/doc/api-documentation/html/swdisprtfchap_8h-source.html
new file mode 100644
index 0000000..97b7023
--- /dev/null
+++ b/doc/api-documentation/html/swdisprtfchap_8h-source.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swdisprtfchap.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swdisprtfchap.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swdisprtfchap.h - definition of class SWDispRTFChap, an SWDisplay used to</font>
+00003 <font class="comment"> * display an entire chapter in Rich Text Format</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swdisprtfchap_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="comment">//---------------------------------------------------------------------------</font>
+00024 <font class="preprocessor">#ifndef swdisprtfchapH</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define swdisprtfchapH</font>
+00026 <font class="preprocessor"></font><font class="comment">//---------------------------------------------------------------------------</font>
+00027 <font class="preprocessor">#include &lt;vcl\SysUtils.hpp&gt;</font>
+00028 <font class="preprocessor">#include &lt;vcl\Controls.hpp&gt;</font>
+00029 <font class="preprocessor">#include &lt;vcl\Classes.hpp&gt;</font>
+00030 <font class="preprocessor">#include &lt;vcl\Forms.hpp&gt;</font>
+00031 <font class="preprocessor">#include &lt;vcl\ComCtrls.hpp&gt;</font>
+00032 <font class="preprocessor">#include &lt;vcl\StdCtrls.hpp&gt;</font>
+00033 <font class="preprocessor">#include &lt;swtext.h&gt;</font>
+00034 <font class="preprocessor">#include &lt;swdisprtf.h&gt;</font>
+00035 <font class="comment">//---------------------------------------------------------------------------</font>
+00036
+00037 <font class="keyword">class </font>SWDispRTFChap:<font class="keyword">public</font> SWDispRTF
+00038 {
+00039 <font class="keyword">protected</font>:
+00040
+00041 <font class="keywordtype">bool</font> FCurVerseMrk;
+00042 <font class="keywordtype">bool</font> FCurVersePos;
+00043 <font class="keywordtype">bool</font> FMarkCurrentVerse;
+00044 <font class="keywordtype">bool</font> FAutoPosition;
+00045
+00046 <font class="keywordtype">char</font> platformID;
+00047
+00048 <font class="keyword">virtual</font> <font class="keywordtype">void</font> __fastcall Loaded (<font class="keywordtype">void</font>);
+00049 <font class="keyword">public</font>:
+00050 __fastcall SWDispRTFChap (TComponent * Owner);
+00051 __fastcall ~ SWDispRTFChap ();
+00052
+00053 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Display (<a class="code" href="class_s_w_module.html">SWModule</a> &amp; imodule);
+00054 __published:__property <font class="keywordtype">bool</font> CurVersePos =
+00055 {
+00056 read = FCurVersePos, write = FCurVersePos, <font class="keywordflow">default</font> = <font class="keyword">true</font>};
+00057 __property <font class="keywordtype">bool</font> CurVerseMrk = { read = FCurVerseMrk, write =
+00058 FCurVerseMrk, <font class="keywordflow">default</font> = <font class="keyword">true</font> };
+00059 __property <font class="keywordtype">bool</font> MarkCurrentVerse = { read = FMarkCurrentVerse, write =
+00060 FMarkCurrentVerse, <font class="keywordflow">default</font> = <font class="keyword">true</font> };
+00061 __property <font class="keywordtype">bool</font> AutoPosition = { read = FAutoPosition, write =
+00062 FAutoPosition, <font class="keywordflow">default</font> = <font class="keyword">true</font> };
+00063 };
+00064
+00065 <font class="comment">//---------------------------------------------------------------------------</font>
+00066 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swfilter_8h-source.html b/doc/api-documentation/html/swfilter_8h-source.html
new file mode 100644
index 0000000..76f7525
--- /dev/null
+++ b/doc/api-documentation/html/swfilter_8h-source.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swfilter.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swfilter.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swfilter.h - definition of class SWFilter used to filter text between</font>
+00003 <font class="comment"> * different formats</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swfilter_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWFILTER_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWFILTER_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#include &lt;string&gt;</font>
+00026 <font class="preprocessor">#include &lt;list&gt;</font>
+00027 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00034 <font class="keyword">typedef</font> std::list &lt; std::string &gt; OptionsList;
+00035
+00036
+00041 <font class="keyword">class </font><a class="code" href="class_s_w_module.html">SWModule</a>;
+00042
+00043 <font class="keyword">class </font>SWDLLEXPORT SWFilter {
+00044 <font class="keyword">public</font>:
+00045 <font class="keyword">virtual</font> ~SWFilter() {}
+00049 <font class="comment">// typedef std::list &lt; std::string &gt; OptionsList;</font>
+00053 <font class="comment"></font> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> * getOptionName ()
+00054 {
+00055 <font class="keywordflow">return</font> 0;
+00056 }
+00061 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> * getOptionTip ()
+00062 {
+00063 <font class="keywordflow">return</font> 0;
+00064 }
+00069 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00070 {
+00071 OptionsList options;
+00072 <font class="keywordflow">return</font> options;
+00073 }
+00080 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *)
+00081 {
+00082 }
+00083 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> * getOptionValue ()
+00084 {
+00085 <font class="keywordflow">return</font> 0;
+00086 }
+00093 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0)
+00094 {
+00095 <font class="keywordflow">return</font> ProcessText(text, maxlen);
+00096 }
+00102 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen = -1)
+00103 {
+00104 <font class="keywordflow">return</font> ProcessText(text, maxlen, 0);
+00105 }
+00106 };
+00107
+00108 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swfiltermgr_8cpp-source.html b/doc/api-documentation/html/swfiltermgr_8cpp-source.html
new file mode 100644
index 0000000..cbdf86e
--- /dev/null
+++ b/doc/api-documentation/html/swfiltermgr_8cpp-source.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swfiltermgr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swfiltermgr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swfiltermgr.cpp - definition of class SWFilterMgr used as an interface to</font>
+00003 <font class="comment"> * manage filters on a module</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swfiltermgr_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#include &lt;swfiltermgr.h&gt;</font>
+00024
+00025
+00026 SWFilterMgr::SWFilterMgr() {
+00027 }
+00028
+00029
+00030 SWFilterMgr::~SWFilterMgr() {
+00031 }
+00032
+00033
+00034 <font class="keywordtype">void</font> SWFilterMgr::setParentMgr(<a class="code" href="class_s_w_mgr.html">SWMgr</a> *parentMgr) {
+00035 this-&gt;parentMgr = parentMgr;
+00036 }
+00037
+00038
+00039 <a class="code" href="class_s_w_mgr.html">SWMgr</a> *SWFilterMgr::getParentMgr() {
+00040 <font class="keywordflow">return</font> parentMgr;
+00041 }
+00042
+00043
+00044 <font class="keywordtype">void</font> SWFilterMgr::AddGlobalOptions(<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) {
+00045 }
+00046
+00047
+00048 <font class="keywordtype">void</font> SWFilterMgr::AddLocalOptions(<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) {
+00049 }
+00050
+00051
+00058 <font class="keywordtype">void</font> SWFilterMgr::AddEncodingFilters(<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section) {
+00059 }
+00060
+00061
+00068 <font class="keywordtype">void</font> SWFilterMgr::AddRenderFilters(<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section) {
+00069 }
+00070
+00071
+00078 <font class="keywordtype">void</font> SWFilterMgr::AddStripFilters(<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section) {
+00079 }
+00080
+00081
+00088 <font class="keywordtype">void</font> SWFilterMgr::AddRawFilters(<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section) {
+00089 }
+00090
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swfiltermgr_8h-source.html b/doc/api-documentation/html/swfiltermgr_8h-source.html
new file mode 100644
index 0000000..2adf1ec
--- /dev/null
+++ b/doc/api-documentation/html/swfiltermgr_8h-source.html
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swfiltermgr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swfiltermgr.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swfiltermgr.h - definition of class SWFilterMgr used as an interface to</font>
+00003 <font class="comment"> * manage filters on a module</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swfiltermgr_8h-source.html,v 1.5 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWFILTERMGR_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWFILTERMGR_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;sys/types.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swconfig.h&gt;</font>
+00029 <font class="preprocessor">#include &lt;swlog.h&gt;</font>
+00030
+00031 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00032
+00033 <font class="keyword">class </font><a class="code" href="class_s_w_mgr.html">SWMgr</a>;
+00034
+00035
+00036 <font class="keyword">class </font>SWDLLEXPORT SWFilterMgr {
+00037
+00038 <font class="keyword">private</font>:
+00039 <a class="code" href="class_s_w_mgr.html">SWMgr</a> *parentMgr;
+00040
+00041 <font class="keyword">public</font>:
+00042 SWFilterMgr ();
+00043 <font class="keyword">virtual</font> ~SWFilterMgr ();
+00044
+00045 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setParentMgr(<a class="code" href="class_s_w_mgr.html">SWMgr</a> *parentMgr);
+00046 <font class="keyword">virtual</font> <a class="code" href="class_s_w_mgr.html">SWMgr</a> *getParentMgr();
+00047
+00048 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddGlobalOptions (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section,
+00049 ConfigEntMap::iterator start,
+00050 ConfigEntMap::iterator end);
+00051 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddLocalOptions (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section,
+00052 ConfigEntMap::iterator start,
+00053 ConfigEntMap::iterator end);
+00054
+00060 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddEncodingFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00066 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddRenderFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00072 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddStripFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00078 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddRawFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00079
+00080 };
+00081
+00082 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swgenbook_8cpp-source.html b/doc/api-documentation/html/swgenbook_8cpp-source.html
new file mode 100644
index 0000000..9c5f96c
--- /dev/null
+++ b/doc/api-documentation/html/swgenbook_8cpp-source.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swgenbook.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swgenbook.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swld.cpp - code for base class 'SWLD'. SWLD is the basis for all</font>
+00003 <font class="comment"> * types of Lexicon and Dictionary modules (hence the 'LD').</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;swgenbook.h&gt;</font>
+00007
+00008
+00009 <font class="comment">/******************************************************************************</font>
+00010 <font class="comment"> * SWLD Constructor - Initializes data for instance of SWLD</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * ENT: imodname - Internal name for module</font>
+00013 <font class="comment"> * imoddesc - Name to display to user for module</font>
+00014 <font class="comment"> * idisp - Display object to use for displaying</font>
+00015 <font class="comment"> */</font>
+00016
+<a name="l00017"></a><a class="code" href="class_s_w_gen_book.html#a0">00017</a> <a class="code" href="class_s_w_gen_book.html#a0">SWGenBook::SWGenBook</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : <a class="code" href="class_s_w_module.html">SWModule</a>(imodname, imoddesc, idisp, "Generic Books", enc, dir, mark, ilang) {
+00018 }
+00019
+00020
+00021 <font class="comment">/******************************************************************************</font>
+00022 <font class="comment"> * SWLD Destructor - Cleans up instance of SWLD</font>
+00023 <font class="comment"> */</font>
+00024
+00025 SWGenBook::~SWGenBook() {
+00026 }
+00027
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swgenbook_8h-source.html b/doc/api-documentation/html/swgenbook_8h-source.html
new file mode 100644
index 0000000..4793ace
--- /dev/null
+++ b/doc/api-documentation/html/swgenbook_8h-source.html
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swgenbook.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swgenbook.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment">* swld.h - code for base class 'SWLD'. SWLD is the basis for all</font>
+00003 <font class="comment">* types of Lexicon and Dictionary modules (hence the 'LD').</font>
+00004 <font class="comment">*</font>
+00005 <font class="comment">* $Id: swgenbook_8h-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment">*</font>
+00007 <font class="comment">* Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment">* CrossWire Bible Society</font>
+00009 <font class="comment">* P. O. Box 2528</font>
+00010 <font class="comment">* Tempe, AZ 85280-2528</font>
+00011 <font class="comment">*</font>
+00012 <font class="comment">* This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment">* under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment">* Free Software Foundation version 2.</font>
+00015 <font class="comment">*</font>
+00016 <font class="comment">* This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment">* WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment">* General Public License for more details.</font>
+00020 <font class="comment">*</font>
+00021 <font class="comment">*/</font>
+00022
+00023 <font class="preprocessor">#ifndef SWGENBOOK_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWGENBOOK_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;treekeyidx.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+<a name="l00034"></a><a class="code" href="class_s_w_gen_book.html">00034</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_gen_book.html">SWGenBook</a>:<font class="keyword">public</font> <a class="code" href="class_s_w_module.html">SWModule</a> {
+00035
+00036 <font class="keyword">protected</font>:
+00037 <font class="keywordtype">char</font> *entkeytxt;
+00038
+00039 <font class="keyword">public</font>:
+00046 <a class="code" href="class_s_w_gen_book.html">SWGenBook</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00047 <font class="keyword">virtual</font> ~<a class="code" href="class_s_w_gen_book.html">SWGenBook</a>();
+00048 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_module.html#a26">CreateKey</a>() = 0;
+00049 };
+00050
+00051 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swinputmeth_8cpp-source.html b/doc/api-documentation/html/swinputmeth_8cpp-source.html
new file mode 100644
index 0000000..747ceb9
--- /dev/null
+++ b/doc/api-documentation/html/swinputmeth_8cpp-source.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swinputmeth.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swinputmeth.cpp</h1><div class="fragment"><pre>00001
+00010 <font class="preprocessor">#include &lt;swinputmeth.h&gt;</font>
+00011
+<a name="l00012"></a><a class="code" href="class_s_w_input_method.html#a0">00012</a> <a class="code" href="class_s_w_input_method.html#a0">SWInputMethod::SWInputMethod</a>() {
+00013 state = 0;
+00014 }
+00015
+00016 <font class="keywordtype">void</font> SWInputMethod::setState(<font class="keywordtype">int</font> state) {
+00017 this-&gt;state = state;
+00018 }
+00019
+00020 <font class="keywordtype">int</font> SWInputMethod::getState() {
+00021 <font class="keywordflow">return</font> state;
+00022 }
+00023
+00024 <font class="keywordtype">void</font> SWInputMethod::clearState() {
+00025 state = 0;
+00026 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swinputmeth_8h-source.html b/doc/api-documentation/html/swinputmeth_8h-source.html
new file mode 100644
index 0000000..053fbc0
--- /dev/null
+++ b/doc/api-documentation/html/swinputmeth_8h-source.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swinputmeth.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swinputmeth.h</h1><div class="fragment"><pre>00001
+00010 <font class="preprocessor">#ifndef SWINPUTMETHOD_H</font>
+00011 <font class="preprocessor"></font><font class="preprocessor">#define SWINPUTMETHOD_H</font>
+00012 <font class="preprocessor"></font>
+<a name="l00013"></a><a class="code" href="class_s_w_input_method.html">00013</a> <font class="keyword">class </font><a class="code" href="class_s_w_input_method.html">SWInputMethod</a> {
+00014
+00015 <font class="keyword">private</font>:
+00016 <font class="keywordtype">int</font> state;
+00017
+00018 <font class="keyword">protected</font>:
+00019 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setState(<font class="keywordtype">int</font> state);
+00020
+00021 <font class="keyword">public</font>:
+00022 <a class="code" href="class_s_w_input_method.html#a0">SWInputMethod</a>();
+00023 <font class="keyword">virtual</font> ~<a class="code" href="class_s_w_input_method.html">SWInputMethod</a>() {}
+00024
+00025 <font class="keyword">virtual</font> <font class="keywordtype">int</font> *translate(<font class="keywordtype">char</font> in) = 0;
+00026 <font class="keyword">virtual</font> <font class="keywordtype">int</font> getState();
+00027 <font class="keyword">virtual</font> <font class="keywordtype">void</font> clearState();
+00028 };
+00029
+00030 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swkey_8cpp-source.html b/doc/api-documentation/html/swkey_8cpp-source.html
new file mode 100644
index 0000000..115e65e
--- /dev/null
+++ b/doc/api-documentation/html/swkey_8cpp-source.html
@@ -0,0 +1,210 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swkey.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swkey.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swkey.cpp - code for base class 'SWKey'. SWKey is the basis for all</font>
+00003 <font class="comment"> * types of keys for indexing into modules (e.g. verse, word,</font>
+00004 <font class="comment"> * place, etc.)</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010
+00011 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *classes[] = {<font class="stringliteral">"SWKey"</font>, <font class="stringliteral">"SWObject"</font>, 0};
+00012 <a class="code" href="class_s_w_class.html">SWClass</a> SWKey::classdef(classes);
+00013
+00014 <font class="comment">/******************************************************************************</font>
+00015 <font class="comment"> * SWKey Constructor - initializes instance of SWKey</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> * ENT: ikey - text key</font>
+00018 <font class="comment"> */</font>
+00019
+<a name="l00020"></a><a class="code" href="class_s_w_key.html#a0">00020</a> <a class="code" href="class_s_w_key.html#a0">SWKey::SWKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey)
+00021 {
+00022 index = 0;
+00023 persist = 0;
+00024 keytext = 0;
+00025 error = 0;
+00026 stdstr(&amp;keytext, ikey);
+00027 init();
+00028 }
+00029
+<a name="l00030"></a><a class="code" href="class_s_w_key.html#a1">00030</a> <a class="code" href="class_s_w_key.html#a0">SWKey::SWKey</a>(<a class="code" href="class_s_w_key.html">SWKey</a> <font class="keyword">const</font> &amp;k)
+00031 {
+00032 index = k.<a class="code" href="class_s_w_key.html#o0">index</a>;
+00033 persist = k.<a class="code" href="class_s_w_key.html#n1">persist</a>;
+00034 userData = k.<a class="code" href="class_s_w_key.html#m0">userData</a>;
+00035 keytext = 0;
+00036 error = k.<a class="code" href="class_s_w_key.html#n2">error</a>;
+00037 stdstr(&amp;keytext, k.<a class="code" href="class_s_w_key.html#n0">keytext</a>);
+00038 init();
+00039 }
+00040
+00041 <font class="keywordtype">void</font> SWKey::init() {
+00042 myclass = &amp;classdef;
+00043 }
+00044
+<a name="l00045"></a><a class="code" href="class_s_w_key.html#a3">00045</a> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_key.html#a3">SWKey::clone</a>()<font class="keyword"> const</font>
+00046 <font class="keyword"></font>{
+00047 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_s_w_key.html#a0">SWKey</a>(*<font class="keyword">this</font>);
+00048 }
+00049
+00050 <font class="comment">/******************************************************************************</font>
+00051 <font class="comment"> * SWKey Destructor - cleans up instance of SWKey</font>
+00052 <font class="comment"> */</font>
+00053
+<a name="l00054"></a><a class="code" href="class_s_w_key.html#a2">00054</a> <a class="code" href="class_s_w_key.html#a2">SWKey::~SWKey</a>() {
+00055 <font class="keywordflow">if</font> (keytext)
+00056 <font class="keyword">delete</font> [] keytext;
+00057 }
+00058
+00059
+00060 <font class="comment">/******************************************************************************</font>
+00061 <font class="comment"> * SWKey::Persist - Gets whether this object itself persists within a</font>
+00062 <font class="comment"> * module that it was used to SetKey or just a copy.</font>
+00063 <font class="comment"> * (1 - persists in module; 0 - a copy is attempted</font>
+00064 <font class="comment"> *</font>
+00065 <font class="comment"> * RET: value of persist</font>
+00066 <font class="comment"> */</font>
+00067
+<a name="l00068"></a><a class="code" href="class_s_w_key.html#a4">00068</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_key.html#a4">SWKey::Persist</a>()<font class="keyword"> const</font>
+00069 <font class="keyword"></font>{
+00070 <font class="keywordflow">return</font> persist;
+00071 }
+00072
+00073
+00074 <font class="comment">/******************************************************************************</font>
+00075 <font class="comment"> * SWKey::Persist - Set/gets whether this object itself persists within a</font>
+00076 <font class="comment"> * module that it was used to SetKey or just a copy.</font>
+00077 <font class="comment"> * (1 - persists in module; 0 - a copy is attempted</font>
+00078 <font class="comment"> *</font>
+00079 <font class="comment"> * ENT: ipersist - value which to set persist</font>
+00080 <font class="comment"> * [-1] - only get</font>
+00081 <font class="comment"> *</font>
+00082 <font class="comment"> * RET: value of persist</font>
+00083 <font class="comment"> */</font>
+00084
+<a name="l00085"></a><a class="code" href="class_s_w_key.html#a5">00085</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_key.html#a4">SWKey::Persist</a>(<font class="keywordtype">signed</font> <font class="keywordtype">char</font> ipersist)
+00086 {
+00087 <font class="keywordflow">if</font> (ipersist != -1)
+00088 persist = ipersist;
+00089
+00090 <font class="keywordflow">return</font> persist;
+00091 }
+00092
+00093
+00094 <font class="comment">/******************************************************************************</font>
+00095 <font class="comment"> * SWKey::Error - Gets and clears error status</font>
+00096 <font class="comment"> *</font>
+00097 <font class="comment"> * RET: error status</font>
+00098 <font class="comment"> */</font>
+00099
+<a name="l00100"></a><a class="code" href="class_s_w_key.html#a6">00100</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_key.html#a6">SWKey::Error</a>()
+00101 {
+00102 <font class="keywordtype">char</font> retval = error;
+00103
+00104 error = 0;
+00105 <font class="keywordflow">return</font> retval;
+00106 }
+00107
+00108
+00109 <font class="comment">/******************************************************************************</font>
+00110 <font class="comment"> * SWKey::setText Equates this SWKey to a character string</font>
+00111 <font class="comment"> *</font>
+00112 <font class="comment"> * ENT: ikey - other swkey object</font>
+00113 <font class="comment"> */</font>
+00114
+<a name="l00115"></a><a class="code" href="class_s_w_key.html#a7">00115</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a7">SWKey::setText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey) {
+00116 stdstr(&amp;keytext, ikey);
+00117 }
+00118
+00119
+00120 <font class="comment">/******************************************************************************</font>
+00121 <font class="comment"> * SWKey::copyFrom Equates this SWKey to another SWKey object</font>
+00122 <font class="comment"> *</font>
+00123 <font class="comment"> * ENT: ikey - other swkey object</font>
+00124 <font class="comment"> */</font>
+00125
+<a name="l00126"></a><a class="code" href="class_s_w_key.html#a8">00126</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) {
+00127 <font class="comment">// not desirable Persist(ikey.Persist());</font>
+00128 <a class="code" href="class_s_w_key.html#a7">setText</a>((<font class="keyword">const</font> <font class="keywordtype">char</font> *)ikey);
+00129 }
+00130
+00131
+00132 <font class="comment">/******************************************************************************</font>
+00133 <font class="comment"> * SWKey::getText - returns text key if (char *) cast is requested</font>
+00134 <font class="comment"> */</font>
+00135
+<a name="l00136"></a><a class="code" href="class_s_w_key.html#a9">00136</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_key.html#a9">SWKey::getText</a>()<font class="keyword"> const </font>{
+00137 <font class="keywordflow">return</font> keytext;
+00138 }
+00139
+00140
+00141 <font class="comment">/******************************************************************************</font>
+00142 <font class="comment"> * SWKey::compare - Compares another VerseKey object</font>
+00143 <font class="comment"> *</font>
+00144 <font class="comment"> * ENT: ikey - key to compare with this one</font>
+00145 <font class="comment"> *</font>
+00146 <font class="comment"> * RET: &gt; 0 if this key is greater than compare key</font>
+00147 <font class="comment"> * &lt; 0</font>
+00148 <font class="comment"> * 0</font>
+00149 <font class="comment"> */</font>
+00150
+<a name="l00151"></a><a class="code" href="class_s_w_key.html#a11">00151</a> <font class="keywordtype">int</font> <a class="code" href="class_s_w_key.html#a11">SWKey::compare</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey)
+00152 {
+00153 <font class="keywordflow">return</font> strcmp((<font class="keyword">const</font> <font class="keywordtype">char</font> *)*<font class="keyword">this</font>, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)ikey);
+00154 }
+00155
+00156
+00157 <font class="comment">/******************************************************************************</font>
+00158 <font class="comment"> * SWKey::setPosition(SW_POSITION) - Positions this key if applicable</font>
+00159 <font class="comment"> */</font>
+00160
+00161 <font class="keywordtype">void</font> SWKey::setPosition(SW_POSITION p) {
+00162 <font class="keywordflow">switch</font> (p) {
+00163 <font class="keywordflow">case</font> POS_TOP:
+00164 <font class="comment">// *this = "";</font>
+00165 <font class="keywordflow">break</font>;
+00166 <font class="keywordflow">case</font> POS_BOTTOM:
+00167 <font class="comment">// *this = "zzzzzzzzz";</font>
+00168 <font class="keywordflow">break</font>;
+00169 }
+00170 }
+00171
+00172
+00173 <font class="comment">/******************************************************************************</font>
+00174 <font class="comment"> * SWKey::increment - Increments key a number of entries</font>
+00175 <font class="comment"> *</font>
+00176 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00177 <font class="comment"> *</font>
+00178 <font class="comment"> * RET: *this</font>
+00179 <font class="comment"> */</font>
+00180
+<a name="l00181"></a><a class="code" href="class_s_w_key.html#a15">00181</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a15">SWKey::increment</a>(<font class="keywordtype">int</font>) {
+00182 error = KEYERR_OUTOFBOUNDS;
+00183 }
+00184
+00185
+00186 <font class="comment">/******************************************************************************</font>
+00187 <font class="comment"> * SWKey::decrement - Decrements key a number of entries</font>
+00188 <font class="comment"> *</font>
+00189 <font class="comment"> * ENT: decrement - Number of entries to jump backward</font>
+00190 <font class="comment"> *</font>
+00191 <font class="comment"> * RET: *this</font>
+00192 <font class="comment"> */</font>
+00193
+<a name="l00194"></a><a class="code" href="class_s_w_key.html#a14">00194</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a14">SWKey::decrement</a>(<font class="keywordtype">int</font>) {
+00195 error = KEYERR_OUTOFBOUNDS;
+00196 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swkey_8h-source.html b/doc/api-documentation/html/swkey_8h-source.html
new file mode 100644
index 0000000..ca6c283
--- /dev/null
+++ b/doc/api-documentation/html/swkey_8h-source.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swkey.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swkey.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swkey.h - code for base class 'swkey'. swkey is the basis for all</font>
+00003 <font class="comment"> * types of keys for indexing into modules (e.g. verse, word,</font>
+00004 <font class="comment"> * place, etc.)</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * $Id: swkey_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00009 <font class="comment"> * CrossWire Bible Society</font>
+00010 <font class="comment"> * P. O. Box 2528</font>
+00011 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00014 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00015 <font class="comment"> * Free Software Foundation version 2.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00018 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00019 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00020 <font class="comment"> * General Public License for more details.</font>
+00021 <font class="comment"> *</font>
+00022 <font class="comment"> */</font>
+00023
+00024 <font class="preprocessor">#ifndef SWKEY_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define SWKEY_H</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#include &lt;swobject.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00031 <font class="preprocessor">#define KEYERR_OUTOFBOUNDS 1</font>
+00032 <font class="preprocessor"></font>
+00033 <font class="preprocessor">#define SWKEY_OPERATORS \</font>
+00034 <font class="preprocessor"> SWKey &amp; operator = (const char *ikey) { setText(ikey); return *this; } \</font>
+00035 <font class="preprocessor"> SWKey &amp; operator = (const SWKey &amp;ikey) { copyFrom(ikey); return *this; } \</font>
+00036 <font class="preprocessor"> SWKey &amp; operator = (SW_POSITION pos) { setPosition(pos); return *this; } \</font>
+00037 <font class="preprocessor"> operator const char *() const { return getText(); } \</font>
+00038 <font class="preprocessor"> bool operator == (const SWKey &amp; ikey) { return equals(ikey); } \</font>
+00039 <font class="preprocessor"> bool operator != (const SWKey &amp; ikey) { return !equals(ikey); } \</font>
+00040 <font class="preprocessor"> virtual bool operator &gt; (const SWKey &amp; ikey) { return (compare (ikey) &gt; 0); } \</font>
+00041 <font class="preprocessor"> virtual bool operator &lt; (const SWKey &amp; ikey) { return (compare (ikey) &lt; 0); } \</font>
+00042 <font class="preprocessor"> virtual bool operator &gt;= (const SWKey &amp; ikey) { return (compare (ikey) &gt; -1); } \</font>
+00043 <font class="preprocessor"> virtual bool operator &lt;= (const SWKey &amp; ikey) { return (compare (ikey) &lt; 1); } \</font>
+00044 <font class="preprocessor"> SWKey &amp; operator -= (int steps) { decrement(steps); return *this; } \</font>
+00045 <font class="preprocessor"> SWKey &amp; operator += (int steps) { increment(steps); return *this; } \</font>
+00046 <font class="preprocessor"> SWKey &amp; operator++ (int) { return *this += 1; } \</font>
+00047 <font class="preprocessor"> SWKey &amp; operator-- (int) { return *this -= 1; }</font>
+00048 <font class="preprocessor"></font>
+00049
+00050 <font class="comment">// For use with = operator to position key.</font>
+00051
+00052 <font class="keyword">class </font>SW_POSITION
+00053 {
+00054 <font class="keywordtype">char</font> pos;
+00055 <font class="keyword">public</font>:
+00056 SW_POSITION (<font class="keywordtype">char</font> ipos)
+00057 {
+00058 pos = ipos;
+00059 }
+00060 operator char ()
+00061 {
+00062 <font class="keywordflow">return</font> pos;
+00063 }
+00064 };
+00065
+00066 <font class="preprocessor">#define POS_TOP ((char)1)</font>
+00067 <font class="preprocessor"></font><font class="preprocessor">#define POS_BOTTOM ((char)2)</font>
+00068 <font class="preprocessor"></font>
+00069 <font class="preprocessor">#define TOP SW_POSITION(POS_TOP)</font>
+00070 <font class="preprocessor"></font><font class="preprocessor">#define BOTTOM SW_POSITION(POS_BOTTOM)</font>
+00071 <font class="preprocessor"></font>
+<a name="l00076"></a><a class="code" href="class_s_w_key.html">00076</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_key.html">SWKey</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_object.html">SWObject</a> {
+00077 <font class="keywordtype">long</font> index;
+00078 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
+00079 <font class="keywordtype">void</font> init ();
+00080
+00081 <font class="keyword">protected</font>:
+00082 <font class="keywordtype">char</font> *keytext;
+00083 <font class="keywordtype">char</font> persist;
+00084 <font class="keywordtype">char</font> error;
+00085
+00086 <font class="keyword">public</font>:
+00087
+00088 <font class="comment">// misc pointer for whatever</font>
+00089 <font class="keywordtype">void</font> *userData;
+00090
+00095 <a class="code" href="class_s_w_key.html">SWKey</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey = 0);
+00096
+00100 <a class="code" href="class_s_w_key.html">SWKey</a> (<a class="code" href="class_s_w_key.html">SWKey</a> <font class="keyword">const</font> &amp;k);
+00101
+00104 <font class="keyword">virtual</font> ~ SWKey ();
+00105
+00110 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *clone () <font class="keyword">const</font>;
+00111
+00118 <font class="keywordtype">char</font> Persist () <font class="keyword">const</font>;
+00119
+00128 <font class="keywordtype">char</font> Persist (<font class="keywordtype">signed</font> <font class="keywordtype">char</font> ikey);
+00129
+00134 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Error ();
+00135
+00140 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setText(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey);
+00141
+00146 <font class="keyword">virtual</font> <font class="keywordtype">void</font> copyFrom(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey);
+00147
+00150 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getText() <font class="keyword">const</font>;
+00151 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getShortText()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> getText(); }
+00152
+00160 <font class="keyword">virtual</font> <font class="keywordtype">int</font> compare (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; ikey);
+00161
+<a name="l00167"></a><a class="code" href="class_s_w_key.html#a12">00167</a> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> equals(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) { <font class="keywordflow">return</font> !compare(ikey); }
+00168
+00169 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setPosition(SW_POSITION);
+00170
+00176 <font class="keyword">virtual</font> <font class="keywordtype">void</font> decrement(<font class="keywordtype">int</font> steps = 1);
+00177
+00183 <font class="keyword">virtual</font> <font class="keywordtype">void</font> increment(<font class="keywordtype">int</font> steps = 1);
+00184
+00185 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Traversable () { <font class="keywordflow">return</font> 0; }
+00186
+<a name="l00208"></a><a class="code" href="class_s_w_key.html#a17">00208</a> <font class="keyword">virtual</font> <font class="keywordtype">long</font> Index ()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> index; }
+00209 <font class="keyword">virtual</font> <font class="keywordtype">long</font> Index (<font class="keywordtype">long</font> iindex) { index = iindex; <font class="keywordflow">return</font> index; }
+00210
+00211 SWKEY_OPERATORS
+00212
+00213 };
+00214
+00215
+00216 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swld_8cpp-source.html b/doc/api-documentation/html/swld_8cpp-source.html
new file mode 100644
index 0000000..b5a2a61
--- /dev/null
+++ b/doc/api-documentation/html/swld_8cpp-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swld.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swld.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swld.cpp - code for base class 'SWLD'. SWLD is the basis for all</font>
+00003 <font class="comment"> * types of Lexicon and Dictionary modules (hence the 'LD').</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;swld.h&gt;</font>
+00007
+00008
+00009 <font class="comment">/******************************************************************************</font>
+00010 <font class="comment"> * SWLD Constructor - Initializes data for instance of SWLD</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * ENT: imodname - Internal name for module</font>
+00013 <font class="comment"> * imoddesc - Name to display to user for module</font>
+00014 <font class="comment"> * idisp - Display object to use for displaying</font>
+00015 <font class="comment"> */</font>
+00016
+<a name="l00017"></a><a class="code" href="class_s_w_l_d.html#a0">00017</a> <a class="code" href="class_s_w_l_d.html#a0">SWLD::SWLD</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : <a class="code" href="class_s_w_module.html">SWModule</a>(imodname, imoddesc, idisp, "Lexicons / Dictionaries", enc, dir, mark, ilang)
+00018 {
+00019 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00020 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_l_d.html#a2">CreateKey</a>();
+00021 entkeytxt = <font class="keyword">new</font> <font class="keywordtype">char</font> [1];
+00022 *entkeytxt = 0;
+00023 }
+00024
+00025
+00026 <font class="comment">/******************************************************************************</font>
+00027 <font class="comment"> * SWLD Destructor - Cleans up instance of SWLD</font>
+00028 <font class="comment"> */</font>
+00029
+00030 SWLD::~SWLD()
+00031 {
+00032 <font class="keywordflow">if</font> (entkeytxt)
+00033 <font class="keyword">delete</font> [] entkeytxt;
+00034 }
+00035
+00036
+00037 <font class="comment">/******************************************************************************</font>
+00038 <font class="comment"> * SWLD::KeyText - Sets/gets module KeyText, getting from saved text if key is</font>
+00039 <font class="comment"> * persistent</font>
+00040 <font class="comment"> *</font>
+00041 <font class="comment"> * ENT: ikeytext - value which to set keytext</font>
+00042 <font class="comment"> * [0] - only get</font>
+00043 <font class="comment"> *</font>
+00044 <font class="comment"> * RET: pointer to keytext</font>
+00045 <font class="comment"> */</font>
+00046
+<a name="l00047"></a><a class="code" href="class_s_w_l_d.html#a3">00047</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_l_d.html#a3">SWLD::KeyText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikeytext)
+00048 {
+00049 <font class="keywordflow">if</font> (<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>() &amp;&amp; !ikeytext) {
+00050 <a class="code" href="class_s_w_module.html#a28">getRawEntry</a>(); <font class="comment">// force module key to snap to entry</font>
+00051 <font class="keywordflow">return</font> entkeytxt;
+00052 }
+00053 <font class="keywordflow">else</font> <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a12">SWModule::KeyText</a>(ikeytext);
+00054 }
+00055
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swld_8h-source.html b/doc/api-documentation/html/swld_8h-source.html
new file mode 100644
index 0000000..2a78c27
--- /dev/null
+++ b/doc/api-documentation/html/swld_8h-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swld.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swld.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swld.h - code for base class 'SWLD'. SWLD is the basis for all</font>
+00003 <font class="comment"> * types of Lexicon and Dictionary modules (hence the 'LD').</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swld_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWLD_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWLD_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;strkey.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+<a name="l00034"></a><a class="code" href="class_s_w_l_d.html">00034</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_l_d.html">SWLD</a>:<font class="keyword">public</font> <a class="code" href="class_s_w_module.html">SWModule</a>
+00035 {
+00036 <font class="keyword">protected</font>:
+00037 <font class="keywordtype">char</font> *entkeytxt;
+00038 <font class="keyword">public</font>:
+00045 <a class="code" href="class_s_w_l_d.html">SWLD</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00046 <font class="keyword">virtual</font> ~ SWLD ();
+<a name="l00047"></a><a class="code" href="class_s_w_l_d.html#a2">00047</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_module.html#a26">CreateKey</a> ()
+00048 {
+00049 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_str_key.html">StrKey</a> ();
+00050 }
+00057 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a12">KeyText</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ikeytext);
+00058 };
+00059
+00060
+00061 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swlocale_8cpp-source.html b/doc/api-documentation/html/swlocale_8cpp-source.html
new file mode 100644
index 0000000..910d4ea
--- /dev/null
+++ b/doc/api-documentation/html/swlocale_8cpp-source.html
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swlocale.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swlocale.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swlocale.cpp - implementation of Class SWLocale used for retrieval</font>
+00003 <font class="comment"> * of locale lookups</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swlocale_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 2000 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#include &lt;swlocale.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00025
+00026
+00027 SWLocale::SWLocale(<font class="keyword">const</font> <font class="keywordtype">char</font> * ifilename) {
+00028 ConfigEntMap::iterator confEntry;
+00029
+00030 name = 0;
+00031 description = 0;
+00032 bookAbbrevs = 0;
+00033 BMAX = 0;
+00034 books = 0;
+00035 localeSource = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(ifilename);
+00036
+00037 confEntry = localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].find(<font class="stringliteral">"Name"</font>);
+00038 <font class="keywordflow">if</font> (confEntry != localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].end())
+00039 stdstr(&amp;name, (*confEntry).second.c_str());
+00040
+00041 confEntry = localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].find(<font class="stringliteral">"Description"</font>);
+00042 <font class="keywordflow">if</font> (confEntry != localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].end())
+00043 stdstr(&amp;description, (*confEntry).second.c_str());
+00044 }
+00045
+00046
+00047 SWLocale::~SWLocale() {
+00048
+00049 <font class="keyword">delete</font> localeSource;
+00050
+00051 <font class="keywordflow">if</font> (description)
+00052 <font class="keyword">delete</font> [] description;
+00053
+00054 <font class="keywordflow">if</font> (name)
+00055 <font class="keyword">delete</font> [] name;
+00056
+00057 <font class="keywordflow">if</font> (bookAbbrevs)
+00058 <font class="keyword">delete</font> [] bookAbbrevs;
+00059
+00060 <font class="keywordflow">if</font> (BMAX) {
+00061 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; 2; i++)
+00062 <font class="keyword">delete</font> [] books[i];
+00063 <font class="keyword">delete</font> [] BMAX;
+00064 <font class="keyword">delete</font> [] books;
+00065 }
+00066 }
+00067
+00068
+00069 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWLocale::translate(<font class="keyword">const</font> <font class="keywordtype">char</font> *text) {
+00070 LookupMap::iterator entry;
+00071
+00072 entry = lookupTable.find(text);
+00073
+00074 <font class="keywordflow">if</font> (entry == lookupTable.end()) {
+00075 ConfigEntMap::iterator confEntry;
+00076 confEntry = localeSource-&gt;Sections[<font class="stringliteral">"Text"</font>].find(text);
+00077 <font class="keywordflow">if</font> (confEntry == localeSource-&gt;Sections[<font class="stringliteral">"Text"</font>].end())
+00078 lookupTable.insert(LookupMap::value_type(text, text));
+00079 <font class="keywordflow">else</font> lookupTable.insert(LookupMap::value_type(text, (*confEntry).second.c_str()));
+00080 entry = lookupTable.find(text);
+00081 }
+00082 <font class="keywordflow">return</font> (*entry).second.c_str();
+00083 }
+00084
+00085
+<a name="l00086"></a><a class="code" href="class_s_w_locale.html#a2">00086</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_locale.html#a2">SWLocale::getName</a>() {
+00087 <font class="keywordflow">return</font> name;
+00088 }
+00089
+00090
+<a name="l00091"></a><a class="code" href="class_s_w_locale.html#a3">00091</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_locale.html#a3">SWLocale::getDescription</a>() {
+00092 <font class="keywordflow">return</font> description;
+00093 }
+00094
+00095
+00096 <a class="code" href="class_s_w_locale.html">SWLocale</a> &amp;SWLocale::operator +=(<a class="code" href="class_s_w_locale.html">SWLocale</a> &amp;addFrom) {
+00097 *localeSource += *addFrom.<a class="code" href="class_s_w_locale.html#o1">localeSource</a>;
+00098 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00099 }
+00100
+00101
+00102 <font class="keyword">const</font> <font class="keyword">struct </font>abbrev *SWLocale::getBookAbbrevs() {
+00103 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *nullstr = <font class="stringliteral">""</font>;
+00104 <font class="keywordflow">if</font> (!bookAbbrevs) {
+00105 ConfigEntMap::iterator it;
+00106 <font class="keywordtype">int</font> i;
+00107 <font class="keywordtype">int</font> size = localeSource-&gt;Sections[<font class="stringliteral">"Book Abbrevs"</font>].size();
+00108 bookAbbrevs = <font class="keyword">new</font> <font class="keyword">struct </font>abbrev[size + 1];
+00109 <font class="keywordflow">for</font> (i = 0, it = localeSource-&gt;Sections[<font class="stringliteral">"Book Abbrevs"</font>].begin(); it != localeSource-&gt;Sections[<font class="stringliteral">"Book Abbrevs"</font>].end(); it++, i++) {
+00110 bookAbbrevs[i].ab = (*it).first.c_str();
+00111 bookAbbrevs[i].book = atoi((*it).second.c_str());
+00112 }
+00113 bookAbbrevs[i].ab = nullstr;
+00114 bookAbbrevs[i].book = -1;
+00115 }
+00116
+00117 <font class="keywordflow">return</font> bookAbbrevs;
+00118 }
+00119
+00120
+00121 <font class="keywordtype">void</font> SWLocale::getBooks(<font class="keywordtype">char</font> **iBMAX, <font class="keyword">struct</font> sbook ***ibooks) {
+00122 <font class="keywordflow">if</font> (!BMAX) {
+00123 BMAX = <font class="keyword">new</font> <font class="keywordtype">char</font> [2];
+00124 BMAX[0] = VerseKey::builtin_BMAX[0];
+00125 BMAX[1] = VerseKey::builtin_BMAX[1];
+00126
+00127 books = <font class="keyword">new</font> <font class="keyword">struct </font>sbook *[2];
+00128 books[0] = <font class="keyword">new</font> <font class="keyword">struct </font>sbook[BMAX[0]];
+00129 books[1] = <font class="keyword">new</font> <font class="keyword">struct </font>sbook[BMAX[1]];
+00130
+00131 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; 2; i++) {
+00132 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> j = 0; j &lt; BMAX[i]; j++) {
+00133 books[i][j] = VerseKey::builtin_books[i][j];
+00134 books[i][j].name = translate(VerseKey::builtin_books[i][j].name);
+00135 }
+00136 }
+00137 }
+00138
+00139 *iBMAX = BMAX;
+00140 *ibooks = books;
+00141 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swlocale_8h-source.html b/doc/api-documentation/html/swlocale_8h-source.html
new file mode 100644
index 0000000..f77bdf1
--- /dev/null
+++ b/doc/api-documentation/html/swlocale_8h-source.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swlocale.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swlocale.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swlocale.h - definition of Class SWLocale used for retrieval</font>
+00003 <font class="comment"> * of locale lookups</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swlocale_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 2000 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWLOCALE_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWLOCALE_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;string&gt;</font>
+00027 <font class="preprocessor">#include &lt;map&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;swconfig.h&gt;</font>
+00030 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00031
+00032 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00033
+00034 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00035
+00036 <font class="keyword">typedef</font> map &lt; string, string, less &lt; string &gt; &gt;LookupMap;
+00037
+<a name="l00044"></a><a class="code" href="class_s_w_locale.html">00044</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_locale.html">SWLocale</a>
+00045 {
+00046 LookupMap lookupTable;
+00047 <a class="code" href="class_s_w_config.html">SWConfig</a> *localeSource;
+00048 <font class="keywordtype">char</font> *name;
+00049 <font class="keywordtype">char</font> *description;
+00050 <font class="keyword">struct </font>abbrev *bookAbbrevs;
+00051 <font class="keywordtype">char</font> *BMAX;
+00052 <font class="keyword">struct </font>sbook **books;
+00053
+00054 <font class="keyword">public</font>:
+00055 <a class="code" href="class_s_w_locale.html">SWLocale</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ifilename);
+00056 <font class="keyword">virtual</font> ~ SWLocale ();
+00057
+00062 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getName ();
+00066 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getDescription ();
+00067 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *translate (<font class="keyword">const</font> <font class="keywordtype">char</font> *text);
+00068 <font class="keyword">virtual</font> <a class="code" href="class_s_w_locale.html">SWLocale</a> &amp; operator += (<a class="code" href="class_s_w_locale.html">SWLocale</a> &amp; addFrom);
+00069 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keyword">struct </font>abbrev *getBookAbbrevs ();
+00070 <font class="keyword">virtual</font> <font class="keywordtype">void</font> getBooks (<font class="keywordtype">char</font> **iBMAX, <font class="keyword">struct</font> sbook ***ibooks);
+00071 };
+00072
+00073 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swlog_8cpp-source.html b/doc/api-documentation/html/swlog_8cpp-source.html
new file mode 100644
index 0000000..7ac6bf5
--- /dev/null
+++ b/doc/api-documentation/html/swlog_8cpp-source.html
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swlog.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swlog.cpp</h1><div class="fragment"><pre>00001 <font class="comment">//---------------------------------------------------------------------------</font>
+00002
+00003 <font class="preprocessor">#include &lt;stdarg.h&gt;</font>
+00004 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00005 <font class="preprocessor">#ifndef _MSC_VER</font>
+00006 <font class="preprocessor"></font><font class="preprocessor">#include &lt;iostream.h&gt;</font>
+00007 <font class="preprocessor">#endif</font>
+00008 <font class="preprocessor"></font><font class="preprocessor">#include "swlog.h"</font>
+00009 <font class="comment">//---------------------------------------------------------------------------</font>
+00010
+00011
+00012 SWLog *SWLog::systemlog = 0;
+00013
+00014
+00015 <font class="keyword">class </font>__staticsystemlog {
+00016 <font class="keyword">public</font>:
+00017 __staticsystemlog() {
+00018 SWLog::systemlog = <font class="keyword">new</font> SWLog();
+00019 }
+00020 ~__staticsystemlog() {
+00021 <font class="keyword">delete</font> SWLog::systemlog;
+00022 }
+00023 } _staticsystemlog;
+00024
+00025
+00026 <font class="keywordtype">void</font> SWLog::LogWarning(<font class="keywordtype">char</font> *fmt, ...)
+00027 {
+00028 <font class="keywordtype">char</font> msg[2048];
+00029 va_list argptr;
+00030
+00031 <font class="keywordflow">if</font> (log) {
+00032 va_start(argptr, fmt);
+00033 vsprintf(msg, fmt, argptr);
+00034 va_end(argptr);
+00035
+00036 <font class="preprocessor">#ifndef _MSC_VER</font>
+00037 <font class="preprocessor"></font> cerr &lt;&lt; msg;
+00038 cerr &lt;&lt; <font class="stringliteral">"\n"</font>;
+00039 <font class="preprocessor">#endif</font>
+00040 <font class="preprocessor"></font> }
+00041 }
+00042
+00043
+00044 <font class="keywordtype">void</font> SWLog::LogError(<font class="keywordtype">char</font> *fmt, ...)
+00045 {
+00046 <font class="keywordtype">char</font> msg[2048];
+00047 va_list argptr;
+00048
+00049 <font class="keywordflow">if</font> (log) {
+00050 va_start(argptr, fmt);
+00051 vsprintf(msg, fmt, argptr);
+00052 va_end(argptr);
+00053
+00054 <font class="preprocessor">#ifndef _MSC_VER</font>
+00055 <font class="preprocessor"></font> cerr &lt;&lt; msg;
+00056 cerr &lt;&lt; <font class="stringliteral">"\n"</font>;
+00057 <font class="preprocessor">#endif</font>
+00058 <font class="preprocessor"></font> }
+00059 }
+00060
+00061
+00062 <font class="keywordtype">void</font> SWLog::LogTimedInformation(<font class="keywordtype">char</font> *fmt, ...)
+00063 {
+00064 <font class="keywordtype">char</font> msg[2048];
+00065 va_list argptr;
+00066
+00067 <font class="keywordflow">if</font> (log) {
+00068 va_start(argptr, fmt);
+00069 vsprintf(msg, fmt, argptr);
+00070 va_end(argptr);
+00071
+00072 <font class="preprocessor">#ifndef _MSC_VER</font>
+00073 <font class="preprocessor"></font> cout &lt;&lt; msg;
+00074 cout &lt;&lt; <font class="stringliteral">"\n"</font>;
+00075 <font class="preprocessor">#endif</font>
+00076 <font class="preprocessor"></font> }
+00077 }
+00078
+00079
+00080 <font class="keywordtype">void</font> SWLog::LogInformation(<font class="keywordtype">char</font> *fmt, ...)
+00081 {
+00082 <font class="keywordtype">char</font> msg[2048];
+00083 va_list argptr;
+00084
+00085 <font class="keywordflow">if</font> (log) {
+00086 va_start(argptr, fmt);
+00087 vsprintf(msg, fmt, argptr);
+00088 va_end(argptr);
+00089
+00090 <font class="preprocessor">#ifndef _MSC_VER</font>
+00091 <font class="preprocessor"></font> cout &lt;&lt; msg;
+00092 cout &lt;&lt; <font class="stringliteral">"\n"</font>;
+00093 <font class="preprocessor">#endif</font>
+00094 <font class="preprocessor"></font> }
+00095 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swlog_8h-source.html b/doc/api-documentation/html/swlog_8h-source.html
new file mode 100644
index 0000000..a0dbf30
--- /dev/null
+++ b/doc/api-documentation/html/swlog_8h-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swlog.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swlog.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swlog.h - definition of class SWLog used for logging messages</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: swlog_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="comment">//---------------------------------------------------------------------------</font>
+00023 <font class="preprocessor">#ifndef swlogH</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define swlogH</font>
+00025 <font class="preprocessor"></font><font class="comment">//---------------------------------------------------------------------------</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+00029 <font class="keyword">class </font>SWDLLEXPORT SWLog
+00030 {
+00031 <font class="keyword">public</font>:
+00032 <font class="keyword">static</font> SWLog *systemlog;
+00033
+00034 <font class="keywordtype">bool</font> log;
+00035 SWLog ()
+00036 {
+00037 log = <font class="keyword">true</font>;
+00038 }
+00039 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogWarning (<font class="keywordtype">char</font> *fmt, ...);
+00040 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogError (<font class="keywordtype">char</font> *fmt, ...);
+00041 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogTimedInformation (<font class="keywordtype">char</font> *fmt, ...);
+00042 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogInformation (<font class="keywordtype">char</font> *fmt, ...);
+00043 };
+00044
+00045
+00046 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swmacs_8h-source.html b/doc/api-documentation/html/swmacs_8h-source.html
new file mode 100644
index 0000000..ea6ac63
--- /dev/null
+++ b/doc/api-documentation/html/swmacs_8h-source.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swmacs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swmacs.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swmacs.h - generic macros</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: swmacs_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef SWMACS_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define SWMACS_H</font>
+00024 <font class="preprocessor"></font>
+00025
+00026 <font class="comment">// Maximum positive value of a signed numeric type</font>
+00027 <font class="preprocessor">#define MAXPOS(x) ((x)((unsigned x)(1L &lt;&lt; (sizeof(x)*8-1)) - 1))</font>
+00028 <font class="preprocessor"></font>
+00029
+00030 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swmgr_8cpp-source.html b/doc/api-documentation/html/swmgr_8cpp-source.html
new file mode 100644
index 0000000..ba8d877
--- /dev/null
+++ b/doc/api-documentation/html/swmgr_8cpp-source.html
@@ -0,0 +1,1069 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swmgr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swmgr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swmgr.cpp - implementaion of class SWMgr used to interact with an install</font>
+00003 <font class="comment"> * base of sword modules.</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swmgr_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00026
+00027 <font class="preprocessor">#ifndef __GNUC__</font>
+00028 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00029 <font class="preprocessor">#else</font>
+00030 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00031 <font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00032 <font class="preprocessor">#endif</font>
+00033 <font class="preprocessor"></font><font class="preprocessor">#include &lt;sys/stat.h&gt;</font>
+00034 <font class="preprocessor">#ifndef _MSC_VER</font>
+00035 <font class="preprocessor"></font><font class="preprocessor">#include &lt;iostream.h&gt;</font>
+00036 <font class="preprocessor">#endif</font>
+00037 <font class="preprocessor"></font><font class="preprocessor">#include &lt;dirent.h&gt;</font>
+00038
+00039 <font class="preprocessor">#include &lt;swmgr.h&gt;</font>
+00040 <font class="preprocessor">#include &lt;rawtext.h&gt;</font>
+00041 <font class="preprocessor">#include &lt;rawgenbook.h&gt;</font>
+00042 <font class="preprocessor">#include &lt;rawcom.h&gt;</font>
+00043 <font class="preprocessor">#include &lt;hrefcom.h&gt;</font>
+00044 <font class="preprocessor">#include &lt;rawld.h&gt;</font>
+00045 <font class="preprocessor">#include &lt;rawld4.h&gt;</font>
+00046 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00047 <font class="preprocessor">#include &lt;gbfplain.h&gt;</font>
+00048 <font class="preprocessor">#include &lt;thmlplain.h&gt;</font>
+00049 <font class="preprocessor">#include &lt;gbfstrongs.h&gt;</font>
+00050 <font class="preprocessor">#include &lt;gbffootnotes.h&gt;</font>
+00051 <font class="preprocessor">#include &lt;gbfheadings.h&gt;</font>
+00052 <font class="preprocessor">#include &lt;gbfmorph.h&gt;</font>
+00053 <font class="preprocessor">#include &lt;thmlstrongs.h&gt;</font>
+00054 <font class="preprocessor">#include &lt;thmlfootnotes.h&gt;</font>
+00055 <font class="preprocessor">#include &lt;thmlheadings.h&gt;</font>
+00056 <font class="preprocessor">#include &lt;thmlmorph.h&gt;</font>
+00057 <font class="preprocessor">#include &lt;thmllemma.h&gt;</font>
+00058 <font class="preprocessor">#include &lt;thmlscripref.h&gt;</font>
+00059 <font class="preprocessor">#include &lt;cipherfil.h&gt;</font>
+00060 <font class="preprocessor">#include &lt;rawfiles.h&gt;</font>
+00061 <font class="preprocessor">#include &lt;ztext.h&gt;</font>
+00062 <font class="preprocessor">#include &lt;zld.h&gt;</font>
+00063 <font class="preprocessor">#include &lt;zcom.h&gt;</font>
+00064 <font class="preprocessor">#include &lt;lzsscomprs.h&gt;</font>
+00065 <font class="preprocessor">#include &lt;utf8greekaccents.h&gt;</font>
+00066 <font class="preprocessor">#include &lt;utf8cantillation.h&gt;</font>
+00067 <font class="preprocessor">#include &lt;utf8hebrewpoints.h&gt;</font>
+00068 <font class="preprocessor">#include &lt;greeklexattribs.h&gt;</font>
+00069 <font class="preprocessor">#include &lt;swfiltermgr.h&gt;</font>
+00070
+00071
+00072
+00073 <font class="preprocessor">#ifdef ICU</font>
+00074 <font class="preprocessor"></font><font class="preprocessor">#include &lt;utf8transliterator.h&gt;</font>
+00075 <font class="preprocessor">#endif</font>
+00076 <font class="preprocessor"></font>
+00077 <font class="preprocessor">#ifndef EXCLUDEZLIB</font>
+00078 <font class="preprocessor"></font><font class="preprocessor">#include &lt;zipcomprs.h&gt;</font>
+00079 <font class="preprocessor">#endif</font>
+00080 <font class="preprocessor"></font>
+<a name="l00081"></a><a class="code" href="class_s_w_mgr.html#p0">00081</a> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_mgr.html#p0">SWMgr::debug</a> = <font class="keyword">false</font>;
+00082
+00083 <font class="preprocessor">#ifdef GLOBCONFPATH</font>
+00084 <font class="preprocessor"></font><font class="keyword">const</font> <font class="keywordtype">char</font> *SWMgr::globalConfPath = GLOBCONFPATH;
+00085 <font class="preprocessor">#else</font>
+00086 <font class="preprocessor"></font><font class="keyword">const</font> <font class="keywordtype">char</font> *SWMgr::globalConfPath = <font class="stringliteral">"/etc/sword.conf:/usr/local/etc/sword.conf"</font>;
+00087 <font class="preprocessor">#endif</font>
+00088 <font class="preprocessor"></font>
+00089 <font class="keywordtype">void</font> SWMgr::init() {
+00090 SWFilter *tmpFilter = 0;
+00091 configPath = 0;
+00092 <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a> = 0;
+00093 configType = 0;
+00094 myconfig = 0;
+00095 mysysconfig = 0;
+00096 homeConfig = 0;
+00097
+00098
+00099 cipherFilters.clear();
+00100 optionFilters.clear();
+00101 cleanupFilters.clear();
+00102
+00103 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_strongs.html">GBFStrongs</a>();
+00104 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFStrongs"</font>, tmpFilter));
+00105 cleanupFilters.push_back(tmpFilter);
+00106
+00107 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_footnotes.html">GBFFootnotes</a>();
+00108 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFFootnotes"</font>, tmpFilter));
+00109 cleanupFilters.push_back(tmpFilter);
+00110
+00111 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_morph.html">GBFMorph</a>();
+00112 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFMorph"</font>, tmpFilter));
+00113 cleanupFilters.push_back(tmpFilter);
+00114
+00115 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_headings.html">GBFHeadings</a>();
+00116 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFHeadings"</font>, tmpFilter));
+00117 cleanupFilters.push_back(tmpFilter);
+00118
+00119 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_strongs.html">ThMLStrongs</a>();
+00120 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLStrongs"</font>, tmpFilter));
+00121 cleanupFilters.push_back(tmpFilter);
+00122
+00123 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>();
+00124 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLFootnotes"</font>, tmpFilter));
+00125 cleanupFilters.push_back(tmpFilter);
+00126
+00127 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_morph.html">ThMLMorph</a>();
+00128 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLMorph"</font>, tmpFilter));
+00129 cleanupFilters.push_back(tmpFilter);
+00130
+00131 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_headings.html">ThMLHeadings</a>();
+00132 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLHeadings"</font>, tmpFilter));
+00133 cleanupFilters.push_back(tmpFilter);
+00134
+00135 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_lemma.html">ThMLLemma</a>();
+00136 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLLemma"</font>, tmpFilter));
+00137 cleanupFilters.push_back(tmpFilter);
+00138
+00139 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_scripref.html">ThMLScripref</a>();
+00140 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLScripref"</font>, tmpFilter));
+00141 cleanupFilters.push_back(tmpFilter);
+00142
+00143 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>();
+00144 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"UTF8GreekAccents"</font>, tmpFilter));
+00145 cleanupFilters.push_back(tmpFilter);
+00146
+00147 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>();
+00148 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"UTF8HebrewPoints"</font>, tmpFilter));
+00149 cleanupFilters.push_back(tmpFilter);
+00150
+00151 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>();
+00152 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"UTF8Cantillation"</font>, tmpFilter));
+00153 cleanupFilters.push_back(tmpFilter);
+00154
+00155 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_greek_lex_attribs.html">GreekLexAttribs</a>();
+00156 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GreekLexAttribs"</font>, tmpFilter));
+00157 cleanupFilters.push_back(tmpFilter);
+00158
+00159 <font class="comment">/* UTF8Transliterator needs to be handled differently because it should always available as an option, for all modules</font>
+00160 <font class="comment">#ifdef ICU</font>
+00161 <font class="comment"> tmpFilter = new UTF8Transliterator();</font>
+00162 <font class="comment"> optionFilters.insert(FilterMap::value_type("UTF8Transliterator", tmpFilter));</font>
+00163 <font class="comment"> cleanupFilters.push_back(tmpFilter);</font>
+00164 <font class="comment">#endif</font>
+00165 <font class="comment">*/</font>
+00166 gbfplain = <font class="keyword">new</font> <a class="code" href="class_g_b_f_plain.html">GBFPlain</a>();
+00167 cleanupFilters.push_back(gbfplain);
+00168
+00169 thmlplain = <font class="keyword">new</font> <a class="code" href="class_th_m_l_plain.html">ThMLPlain</a>();
+00170 cleanupFilters.push_back(thmlplain);
+00171 }
+00172
+00173
+<a name="l00174"></a><a class="code" href="class_s_w_mgr.html#a1">00174</a> <a class="code" href="class_s_w_mgr.html#a0">SWMgr::SWMgr</a>(SWFilterMgr *filterMgr) {
+00175 commonInit(0, 0, <font class="keyword">true</font>, filterMgr);
+00176 }
+00177
+00178
+<a name="l00179"></a><a class="code" href="class_s_w_mgr.html#a0">00179</a> <a class="code" href="class_s_w_mgr.html#a0">SWMgr::SWMgr</a>(<a class="code" href="class_s_w_config.html">SWConfig</a> *iconfig, <a class="code" href="class_s_w_config.html">SWConfig</a> *isysconfig, <font class="keywordtype">bool</font> autoload, SWFilterMgr *filterMgr) {
+00180 commonInit(iconfig, isysconfig, autoload, filterMgr);
+00181 }
+00182
+00183
+00184 <font class="keywordtype">void</font> SWMgr::commonInit(<a class="code" href="class_s_w_config.html">SWConfig</a> * iconfig, <a class="code" href="class_s_w_config.html">SWConfig</a> * isysconfig, <font class="keywordtype">bool</font> autoload, SWFilterMgr *filterMgr) {
+00185 this-&gt;filterMgr = filterMgr;
+00186 <font class="keywordflow">if</font> (filterMgr)
+00187 filterMgr-&gt;setParentMgr(<font class="keyword">this</font>);
+00188
+00189 init();
+00190
+00191 <font class="keywordflow">if</font> (iconfig) {
+00192 <a class="code" href="class_s_w_mgr.html#m0">config</a> = iconfig;
+00193 myconfig = 0;
+00194 }
+00195 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a> = 0;
+00196 <font class="keywordflow">if</font> (isysconfig) {
+00197 sysconfig = isysconfig;
+00198 mysysconfig = 0;
+00199 }
+00200 <font class="keywordflow">else</font> sysconfig = 0;
+00201
+00202 <font class="keywordflow">if</font> (autoload)
+00203 <a class="code" href="class_s_w_mgr.html#a5">Load</a>();
+00204 }
+00205
+00206
+<a name="l00207"></a><a class="code" href="class_s_w_mgr.html#a2">00207</a> <a class="code" href="class_s_w_mgr.html#a0">SWMgr::SWMgr</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *iConfigPath, <font class="keywordtype">bool</font> autoload, SWFilterMgr *filterMgr) {
+00208
+00209 string path;
+00210
+00211 this-&gt;filterMgr = filterMgr;
+00212 <font class="keywordflow">if</font> (filterMgr)
+00213 filterMgr-&gt;setParentMgr(<font class="keyword">this</font>);
+00214
+00215 init();
+00216
+00217 path = iConfigPath;
+00218 <font class="keywordflow">if</font> ((iConfigPath[strlen(iConfigPath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (iConfigPath[strlen(iConfigPath)-1] != <font class="charliteral">'/'</font>))
+00219 path += <font class="stringliteral">"/"</font>;
+00220 <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) {
+00221 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00222 path += <font class="stringliteral">"mods.conf"</font>;
+00223 stdstr(&amp;configPath, path.c_str());
+00224 }
+00225 <font class="keywordflow">else</font> {
+00226 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) {
+00227 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00228 path += <font class="stringliteral">"mods.d"</font>;
+00229 stdstr(&amp;configPath, path.c_str());
+00230 configType = 1;
+00231 }
+00232 }
+00233
+00234 <a class="code" href="class_s_w_mgr.html#m0">config</a> = 0;
+00235 sysconfig = 0;
+00236
+00237 <font class="keywordflow">if</font> (autoload &amp;&amp; configPath)
+00238 <a class="code" href="class_s_w_mgr.html#a5">Load</a>();
+00239 }
+00240
+00241
+<a name="l00242"></a><a class="code" href="class_s_w_mgr.html#a3">00242</a> <a class="code" href="class_s_w_mgr.html#a3">SWMgr::~SWMgr</a>() {
+00243
+00244 DeleteMods();
+00245
+00246 <font class="keywordflow">for</font> (FilterList::iterator it = cleanupFilters.begin(); it != cleanupFilters.end(); it++)
+00247 <font class="keyword">delete</font> (*it);
+00248
+00249 <font class="keywordflow">if</font> (homeConfig)
+00250 <font class="keyword">delete</font> homeConfig;
+00251
+00252 <font class="keywordflow">if</font> (myconfig)
+00253 <font class="keyword">delete</font> myconfig;
+00254
+00255 <font class="keywordflow">if</font> (prefixPath)
+00256 <font class="keyword">delete</font> [] <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>;
+00257
+00258 <font class="keywordflow">if</font> (configPath)
+00259 <font class="keyword">delete</font> [] configPath;
+00260
+00261 <font class="keywordflow">if</font> (filterMgr)
+00262 <font class="keyword">delete</font> filterMgr;
+00263 }
+00264
+00265
+00266 <font class="keywordtype">void</font> SWMgr::findConfig(<font class="keywordtype">char</font> *configType, <font class="keywordtype">char</font> **prefixPath, <font class="keywordtype">char</font> **configPath) {
+00267 string path;
+00268 ConfigEntMap::iterator entry;
+00269
+00270 <font class="keywordtype">char</font> *envsworddir = getenv (<font class="stringliteral">"SWORD_PATH"</font>);
+00271 <font class="keywordtype">char</font> *envhomedir = getenv (<font class="stringliteral">"HOME"</font>);
+00272
+00273 *configType = 0;
+00274
+00275 <font class="preprocessor">#ifndef _MSC_VER</font>
+00276 <font class="preprocessor"></font> <font class="comment">// check working directory</font>
+00277 <font class="keywordflow">if</font> (debug)
+00278 cerr &lt;&lt; <font class="stringliteral">"Checking working directory for mods.conf..."</font>;
+00279 <font class="preprocessor">#endif</font>
+00280 <font class="preprocessor"></font>
+00281 <font class="keywordflow">if</font> (FileMgr::existsFile(<font class="stringliteral">"."</font>, <font class="stringliteral">"mods.conf"</font>)) {
+00282
+00283 <font class="preprocessor">#ifndef _MSC_VER</font>
+00284 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00285 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00286 <font class="preprocessor">#endif</font>
+00287 <font class="preprocessor"></font>
+00288 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, <font class="stringliteral">"./"</font>);
+00289 stdstr(configPath, <font class="stringliteral">"./mods.conf"</font>);
+00290 <font class="keywordflow">return</font>;
+00291 }
+00292
+00293 <font class="preprocessor">#ifndef _MSC_VER</font>
+00294 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00295 cerr &lt;&lt; <font class="stringliteral">"\nChecking working directory for mods.d..."</font>;
+00296 <font class="preprocessor">#endif</font>
+00297 <font class="preprocessor"></font>
+00298 <font class="keywordflow">if</font> (FileMgr::existsDir(<font class="stringliteral">"."</font>, <font class="stringliteral">"mods.d"</font>)) {
+00299
+00300 <font class="preprocessor">#ifndef _MSC_VER</font>
+00301 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00302 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00303 <font class="preprocessor">#endif</font>
+00304 <font class="preprocessor"></font>
+00305 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, <font class="stringliteral">"./"</font>);
+00306 stdstr(configPath, <font class="stringliteral">"./mods.d"</font>);
+00307 *configType = 1;
+00308 <font class="keywordflow">return</font>;
+00309 }
+00310
+00311
+00312 <font class="comment">// check environment variable SWORD_PATH</font>
+00313 <font class="preprocessor">#ifndef _MSC_VER</font>
+00314 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00315 cerr &lt;&lt; <font class="stringliteral">"\nChecking SWORD_PATH..."</font>;
+00316 <font class="preprocessor">#endif</font>
+00317 <font class="preprocessor"></font>
+00318 <font class="keywordflow">if</font> (envsworddir != NULL) {
+00319
+00320 <font class="preprocessor">#ifndef _MSC_VER</font>
+00321 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00322 cerr &lt;&lt; <font class="stringliteral">"found ("</font> &lt;&lt; envsworddir &lt;&lt; <font class="stringliteral">")\n"</font>;
+00323 <font class="preprocessor">#endif</font>
+00324 <font class="preprocessor"></font>
+00325 path = envsworddir;
+00326 <font class="keywordflow">if</font> ((envsworddir[strlen(envsworddir)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (envsworddir[strlen(envsworddir)-1] != <font class="charliteral">'/'</font>))
+00327 path += <font class="stringliteral">"/"</font>;
+00328
+00329 <font class="preprocessor">#ifndef _MSC_VER</font>
+00330 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00331 cerr &lt;&lt; <font class="stringliteral">"\nChecking $SWORD_PATH for mods.conf..."</font>;
+00332 <font class="preprocessor">#endif</font>
+00333 <font class="preprocessor"></font>
+00334 <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) {
+00335
+00336 <font class="preprocessor">#ifndef _MSC_VER</font>
+00337 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00338 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00339 <font class="preprocessor">#endif</font>
+00340 <font class="preprocessor"></font>
+00341 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00342 path += <font class="stringliteral">"mods.conf"</font>;
+00343 stdstr(configPath, path.c_str());
+00344 <font class="keywordflow">return</font>;
+00345 }
+00346
+00347 <font class="preprocessor">#ifndef _MSC_VER</font>
+00348 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00349 cerr &lt;&lt; <font class="stringliteral">"\nChecking $SWORD_PATH for mods.d..."</font>;
+00350 <font class="preprocessor">#endif</font>
+00351 <font class="preprocessor"></font>
+00352 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) {
+00353
+00354 <font class="preprocessor">#ifndef _MSC_VER</font>
+00355 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00356 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00357 <font class="preprocessor">#endif</font>
+00358 <font class="preprocessor"></font>
+00359 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00360 path += <font class="stringliteral">"mods.d"</font>;
+00361 stdstr(configPath, path.c_str());
+00362 *configType = 1;
+00363 <font class="keywordflow">return</font>;
+00364 }
+00365 }
+00366
+00367
+00368 <font class="comment">// check for systemwide globalConfPath</font>
+00369
+00370 <font class="preprocessor">#ifndef _MSC_VER</font>
+00371 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00372 cerr &lt;&lt; <font class="stringliteral">"\nParsing "</font> &lt;&lt; globalConfPath &lt;&lt; <font class="stringliteral">"..."</font>;
+00373 <font class="preprocessor">#endif</font>
+00374 <font class="preprocessor"></font>
+00375 <font class="keywordtype">char</font> *globPaths = 0;
+00376 <font class="keywordtype">char</font> *gfp;
+00377 stdstr(&amp;globPaths, globalConfPath);
+00378 <font class="keywordflow">for</font> (gfp = strtok(globPaths, <font class="stringliteral">":"</font>); gfp; gfp = strtok(0, <font class="stringliteral">":"</font>)) {
+00379
+00380 <font class="preprocessor"> #ifndef _MSC_VER</font>
+00381 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00382 cerr &lt;&lt; <font class="stringliteral">"\nChecking for "</font> &lt;&lt; gfp &lt;&lt; <font class="stringliteral">"..."</font>;
+00383 <font class="preprocessor">#endif</font>
+00384 <font class="preprocessor"></font>
+00385 <font class="keywordflow">if</font> (FileMgr::existsFile(gfp))
+00386 <font class="keywordflow">break</font>;
+00387 }
+00388
+00389 <font class="keywordflow">if</font> (gfp) {
+00390
+00391 <font class="preprocessor">#ifndef _MSC_VER</font>
+00392 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00393 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00394 <font class="preprocessor">#endif</font>
+00395 <font class="preprocessor"></font>
+00396 <a class="code" href="class_s_w_config.html">SWConfig</a> etcconf(gfp);
+00397 <font class="keywordflow">if</font> ((entry = etcconf.<a class="code" href="class_s_w_config.html#m1">Sections</a>[<font class="stringliteral">"Install"</font>].find(<font class="stringliteral">"DataPath"</font>)) != etcconf.<a class="code" href="class_s_w_config.html#m1">Sections</a>[<font class="stringliteral">"Install"</font>].end()) {
+00398 path = (*entry).second;
+00399 <font class="keywordflow">if</font> (((*entry).second.c_str()[strlen((*entry).second.c_str())-1] != <font class="charliteral">'\\'</font>) &amp;&amp; ((*entry).second.c_str()[strlen((*entry).second.c_str())-1] != <font class="charliteral">'/'</font>))
+00400 path += <font class="stringliteral">"/"</font>;
+00401
+00402 <font class="preprocessor">#ifndef _MSC_VER</font>
+00403 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00404 cerr &lt;&lt; <font class="stringliteral">"DataPath in "</font> &lt;&lt; gfp &lt;&lt; <font class="stringliteral">" is set to: "</font> &lt;&lt; path;
+00405 <font class="preprocessor">#endif</font>
+00406 <font class="preprocessor"></font>
+00407 <font class="preprocessor">#ifndef _MSC_VER</font>
+00408 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00409 cerr &lt;&lt; <font class="stringliteral">"\nChecking for mods.conf in DataPath "</font>;
+00410 <font class="preprocessor">#endif</font>
+00411 <font class="preprocessor"></font> <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) {
+00412
+00413 <font class="preprocessor">#ifndef _MSC_VER</font>
+00414 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00415 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00416 <font class="preprocessor">#endif</font>
+00417 <font class="preprocessor"></font>
+00418 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00419 path += <font class="stringliteral">"mods.conf"</font>;
+00420 stdstr(configPath, path.c_str());
+00421 <font class="keyword">delete</font> [] globPaths;
+00422 <font class="keywordflow">return</font>;
+00423 }
+00424
+00425 <font class="preprocessor">#ifndef _MSC_VER</font>
+00426 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00427 cerr &lt;&lt; <font class="stringliteral">"\nChecking for mods.d in DataPath "</font>;
+00428 <font class="preprocessor">#endif</font>
+00429 <font class="preprocessor"></font>
+00430 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) {
+00431
+00432 <font class="preprocessor">#ifndef _MSC_VER</font>
+00433 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00434 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00435 <font class="preprocessor">#endif</font>
+00436 <font class="preprocessor"></font>
+00437 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00438 path += <font class="stringliteral">"mods.d"</font>;
+00439 stdstr(configPath, path.c_str());
+00440 *configType = 1;
+00441 <font class="keyword">delete</font> [] globPaths;
+00442 <font class="keywordflow">return</font>;
+00443 }
+00444 }
+00445 }
+00446
+00447 <font class="keyword">delete</font> [] globPaths;
+00448
+00449 <font class="comment">// check ~/.sword/</font>
+00450
+00451 <font class="preprocessor">#ifndef _MSC_VER</font>
+00452 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00453 cerr &lt;&lt; <font class="stringliteral">"\nChecking home directory for ~/.sword/mods.conf"</font> &lt;&lt; path;
+00454 <font class="preprocessor">#endif</font>
+00455 <font class="preprocessor"></font>
+00456 <font class="keywordflow">if</font> (envhomedir != NULL) {
+00457 path = envhomedir;
+00458 <font class="keywordflow">if</font> ((envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'/'</font>))
+00459 path += <font class="stringliteral">"/"</font>;
+00460 path += <font class="stringliteral">".sword/"</font>;
+00461 <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) {
+00462
+00463 <font class="preprocessor">#ifndef _MSC_VER</font>
+00464 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00465 cerr &lt;&lt; <font class="stringliteral">" found\n"</font>;
+00466 <font class="preprocessor">#endif</font>
+00467 <font class="preprocessor"></font>
+00468 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00469 path += <font class="stringliteral">"mods.conf"</font>;
+00470 stdstr(configPath, path.c_str());
+00471 <font class="keywordflow">return</font>;
+00472 }
+00473
+00474 <font class="preprocessor">#ifndef _MSC_VER</font>
+00475 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00476 cerr &lt;&lt; <font class="stringliteral">"\nChecking home directory for ~/.sword/mods.d"</font> &lt;&lt; path;
+00477 <font class="preprocessor">#endif</font>
+00478 <font class="preprocessor"></font>
+00479 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) {
+00480
+00481 <font class="preprocessor">#ifndef _MSC_VER</font>
+00482 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug)
+00483 cerr &lt;&lt; <font class="stringliteral">"found\n"</font>;
+00484 <font class="preprocessor">#endif</font>
+00485 <font class="preprocessor"></font>
+00486 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00487 path += <font class="stringliteral">"mods.d"</font>;
+00488 stdstr(configPath, path.c_str());
+00489 *configType = 2;
+00490 <font class="keywordflow">return</font>;
+00491 }
+00492 }
+00493 }
+00494
+00495
+00496 <font class="keywordtype">void</font> SWMgr::loadConfigDir(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath)
+00497 {
+00498 DIR *dir;
+00499 <font class="keyword">struct </font>dirent *ent;
+00500 string newmodfile;
+00501
+00502 <font class="keywordflow">if</font> ((dir = opendir(ipath))) {
+00503 rewinddir(dir);
+00504 <font class="keywordflow">while</font> ((ent = readdir(dir))) {
+00505 <font class="keywordflow">if</font> ((strcmp(ent-&gt;d_name, <font class="stringliteral">"."</font>)) &amp;&amp; (strcmp(ent-&gt;d_name, <font class="stringliteral">".."</font>))) {
+00506 newmodfile = ipath;
+00507 <font class="keywordflow">if</font> ((ipath[strlen(ipath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (ipath[strlen(ipath)-1] != <font class="charliteral">'/'</font>))
+00508 newmodfile += <font class="stringliteral">"/"</font>;
+00509 newmodfile += ent-&gt;d_name;
+00510 <font class="keywordflow">if</font> (config) {
+00511 <a class="code" href="class_s_w_config.html">SWConfig</a> tmpConfig(newmodfile.c_str());
+00512 *<a class="code" href="class_s_w_mgr.html#m0">config</a> += tmpConfig;
+00513 }
+00514 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(newmodfile.c_str());
+00515 }
+00516 }
+00517 closedir(dir);
+00518 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_mgr.html#m0">config</a>) { <font class="comment">// if no .conf file exist yet, create a default</font>
+00519 newmodfile = ipath;
+00520 <font class="keywordflow">if</font> ((ipath[strlen(ipath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (ipath[strlen(ipath)-1] != <font class="charliteral">'/'</font>))
+00521 newmodfile += <font class="stringliteral">"/"</font>;
+00522 newmodfile += <font class="stringliteral">"globals.conf"</font>;
+00523 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(newmodfile.c_str());
+00524 }
+00525 }
+00526 }
+00527
+00528
+00529 <font class="comment">/***********************************************************************</font>
+00530 <font class="comment"> * SWMgr::Load - loads actual modules</font>
+00531 <font class="comment"> *</font>
+00532 <font class="comment"> * RET: status - 0 = ok; -1 no config found; 1 = no modules installed</font>
+00533 <font class="comment"> *</font>
+00534 <font class="comment"> */</font>
+00535
+<a name="l00536"></a><a class="code" href="class_s_w_mgr.html#a5">00536</a> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_mgr.html#a5">SWMgr::Load</a>() {
+00537 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> ret = 0;
+00538
+00539 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_mgr.html#m0">config</a>) { <font class="comment">// If we weren't passed a config object at construction, find a config file</font>
+00540 <font class="keywordflow">if</font> (!configPath) <font class="comment">// If we weren't passed a config path at construction...</font>
+00541 findConfig(&amp;configType, &amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, &amp;configPath);
+00542 <font class="keywordflow">if</font> (configPath) {
+00543 <font class="keywordflow">if</font> (configType)
+00544 loadConfigDir(configPath);
+00545 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(configPath);
+00546 }
+00547 }
+00548
+00549 <font class="keywordflow">if</font> (config) {
+00550 SectionMap::iterator Sectloop, Sectend;
+00551 ConfigEntMap::iterator Entryloop, Entryend;
+00552
+00553 DeleteMods();
+00554
+00555 <font class="keywordflow">for</font> (Sectloop = <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.lower_bound(<font class="stringliteral">"Globals"</font>), Sectend = <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.upper_bound(<font class="stringliteral">"Globals"</font>); Sectloop != Sectend; Sectloop++) { <font class="comment">// scan thru all 'Globals' sections</font>
+00556 <font class="keywordflow">for</font> (Entryloop = (*Sectloop).second.lower_bound(<font class="stringliteral">"AutoInstall"</font>), Entryend = (*Sectloop).second.upper_bound(<font class="stringliteral">"AutoInstall"</font>); Entryloop != Entryend; Entryloop++) <font class="comment">// scan thru all AutoInstall entries</font>
+00557 <a class="code" href="class_s_w_mgr.html#a4">InstallScan</a>((*Entryloop).second.c_str()); <font class="comment">// Scan AutoInstall entry directory for new modules and install</font>
+00558 }
+00559 <font class="keywordflow">if</font> (configType) { <font class="comment">// force reload on config object because we may have installed new modules</font>
+00560 <font class="keyword">delete</font> myconfig;
+00561 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = 0;
+00562 loadConfigDir(configPath);
+00563 }
+00564 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#a2">Load</a>();
+00565
+00566 CreateMods();
+00567
+00568 <font class="comment">// augment config with ~/.sword/mods.d if it exists ---------------------</font>
+00569 <font class="keywordtype">char</font> *envhomedir = getenv (<font class="stringliteral">"HOME"</font>);
+00570 <font class="keywordflow">if</font> (envhomedir != NULL &amp;&amp; configType != 2) { <font class="comment">// 2 = user only</font>
+00571 string path = envhomedir;
+00572 <font class="keywordflow">if</font> ((envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'/'</font>))
+00573 path += <font class="stringliteral">"/"</font>;
+00574 path += <font class="stringliteral">".sword/"</font>;
+00575 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) {
+00576 <font class="keywordtype">char</font> *savePrefixPath = 0;
+00577 <font class="keywordtype">char</font> *saveConfigPath = 0;
+00578 <a class="code" href="class_s_w_config.html">SWConfig</a> *saveConfig = 0;
+00579 stdstr(&amp;savePrefixPath, <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>);
+00580 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str());
+00581 path += <font class="stringliteral">"mods.d"</font>;
+00582 stdstr(&amp;saveConfigPath, configPath);
+00583 stdstr(&amp;configPath, path.c_str());
+00584 saveConfig = <a class="code" href="class_s_w_mgr.html#m0">config</a>;
+00585 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = 0;
+00586 loadConfigDir(configPath);
+00587
+00588 CreateMods();
+00589
+00590 stdstr(&amp;<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, savePrefixPath);
+00591 <font class="keyword">delete</font> []savePrefixPath;
+00592 stdstr(&amp;configPath, saveConfigPath);
+00593 <font class="keyword">delete</font> []saveConfigPath;
+00594 (*saveConfig) += *<a class="code" href="class_s_w_mgr.html#m0">config</a>;
+00595 homeConfig = myconfig;
+00596 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = saveConfig;
+00597 }
+00598 }
+00599 <font class="comment">// -------------------------------------------------------------------------</font>
+00600 <font class="keywordflow">if</font> ( !<a class="code" href="class_s_w_mgr.html#m2">Modules</a>.size() ) <font class="comment">// config exists, but no modules</font>
+00601 ret = 1;
+00602
+00603 }
+00604 <font class="keywordflow">else</font> {
+00605 SWLog::systemlog-&gt;LogError(<font class="stringliteral">"SWMgr: Can't find 'mods.conf' or 'mods.d'. Try setting:\n\tSWORD_PATH=&lt;directory containing mods.conf&gt;\n\tOr see the README file for a full description of setup options (%s)"</font>, (configPath) ? configPath : <font class="stringliteral">"&lt;configPath is null&gt;"</font>);
+00606 ret = -1;
+00607 }
+00608
+00609 <font class="keywordflow">return</font> ret;
+00610 }
+00611
+00612 <a class="code" href="class_s_w_module.html">SWModule</a> *SWMgr::CreateMod(string name, string driver, ConfigEntMap &amp;section)
+00613 {
+00614 string description, datapath, misc1;
+00615 ConfigEntMap::iterator entry;
+00616 <a class="code" href="class_s_w_module.html">SWModule</a> *newmod = 0;
+00617 string lang, sourceformat, encoding;
+00618 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> direction, enc, markup;
+00619
+00620 description = ((entry = section.find(<font class="stringliteral">"Description"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00621 lang = ((entry = section.find(<font class="stringliteral">"Lang"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"en"</font>;
+00622 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00623 encoding = ((entry = section.find(<font class="stringliteral">"Encoding"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00624 datapath = <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>;
+00625 <font class="keywordflow">if</font> ((<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>[strlen(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>[strlen(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>)-1] != <font class="charliteral">'/'</font>))
+00626 datapath += <font class="stringliteral">"/"</font>;
+00627 misc1 += ((entry = section.find(<font class="stringliteral">"DataPath"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00628 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(misc1.c_str()) + 1 ];
+00629 <font class="keywordtype">char</font> *buf2 = buf;
+00630 strcpy(buf, misc1.c_str());
+00631 <font class="comment">// for (; ((*buf2) &amp;&amp; ((*buf2 == '.') || (*buf2 == '/') || (*buf2 == '\\'))); buf2++);</font>
+00632 <font class="keywordflow">for</font> (; ((*buf2) &amp;&amp; ((*buf2 == <font class="charliteral">'/'</font>) || (*buf2 == <font class="charliteral">'\\'</font>))); buf2++);
+00633 <font class="keywordflow">if</font> (*buf2)
+00634 datapath += buf2;
+00635 <font class="keyword">delete</font> [] buf;
+00636
+00637 section[<font class="stringliteral">"AbsoluteDataPath"</font>] = datapath;
+00638
+00639 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"GBF"</font>))
+00640 markup = FMT_GBF;
+00641 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"ThML"</font>))
+00642 markup = FMT_THML;
+00643 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"OSIS"</font>))
+00644 markup = FMT_OSIS;
+00645 <font class="keywordflow">else</font>
+00646 markup = FMT_PLAIN;
+00647
+00648 <font class="keywordflow">if</font> (!stricmp(encoding.c_str(), <font class="stringliteral">"SCSU"</font>))
+00649 enc = ENC_SCSU;
+00650 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(encoding.c_str(), <font class="stringliteral">"UTF-8"</font>)) {
+00651 enc = ENC_UTF8;
+00652 }
+00653 <font class="keywordflow">else</font> enc = ENC_LATIN1;
+00654
+00655 <font class="keywordflow">if</font> ((entry = section.find(<font class="stringliteral">"Direction"</font>)) == section.end()) {
+00656 direction = DIRECTION_LTR;
+00657 }
+00658 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp((*entry).second.c_str(), <font class="stringliteral">"rtol"</font>)) {
+00659 direction = DIRECTION_RTL;
+00660 }
+00661 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp((*entry).second.c_str(), <font class="stringliteral">"bidi"</font>)) {
+00662 direction = DIRECTION_BIDI;
+00663 }
+00664 <font class="keywordflow">else</font> {
+00665 direction = DIRECTION_LTR;
+00666 }
+00667
+00668 <font class="keywordflow">if</font> ((!stricmp(driver.c_str(), <font class="stringliteral">"zText"</font>)) || (!stricmp(driver.c_str(), <font class="stringliteral">"zCom"</font>))) {
+00669 SWCompress *compress = 0;
+00670 <font class="keywordtype">int</font> blockType = CHAPTERBLOCKS;
+00671 misc1 = ((entry = section.find(<font class="stringliteral">"BlockType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"CHAPTER"</font>;
+00672 <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"VERSE"</font>))
+00673 blockType = VERSEBLOCKS;
+00674 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"CHAPTER"</font>))
+00675 blockType = CHAPTERBLOCKS;
+00676 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"BOOK"</font>))
+00677 blockType = BOOKBLOCKS;
+00678
+00679 misc1 = ((entry = section.find(<font class="stringliteral">"CompressType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"LZSS"</font>;
+00680 <font class="preprocessor">#ifndef EXCLUDEZLIB</font>
+00681 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"ZIP"</font>))
+00682 compress = <font class="keyword">new</font> ZipCompress();
+00683 <font class="keywordflow">else</font>
+00684 <font class="preprocessor">#endif</font>
+00685 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"LZSS"</font>))
+00686 compress = <font class="keyword">new</font> LZSSCompress();
+00687
+00688 <font class="keywordflow">if</font> (compress) {
+00689 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"zText"</font>))
+00690 newmod = <font class="keyword">new</font> zText(datapath.c_str(), name.c_str(), description.c_str(), blockType, compress, 0, enc, direction, markup, lang.c_str());
+00691 <font class="keywordflow">else</font> newmod = <font class="keyword">new</font> zCom(datapath.c_str(), name.c_str(), description.c_str(), blockType, compress, 0, enc, direction, markup, lang.c_str());
+00692 }
+00693 }
+00694
+00695 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawText"</font>)) {
+00696 newmod = <font class="keyword">new</font> RawText(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str());
+00697 }
+00698
+00699 <font class="comment">// backward support old drivers</font>
+00700 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawGBF"</font>)) {
+00701 newmod = <font class="keyword">new</font> RawText(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str());
+00702 }
+00703
+00704 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawCom"</font>)) {
+00705 newmod = <font class="keyword">new</font> RawCom(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str());
+00706 }
+00707
+00708 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawFiles"</font>)) {
+00709 newmod = <font class="keyword">new</font> RawFiles(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str());
+00710 }
+00711
+00712 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"HREFCom"</font>)) {
+00713 misc1 = ((entry = section.find(<font class="stringliteral">"Prefix"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00714 newmod = <font class="keyword">new</font> HREFCom(datapath.c_str(), misc1.c_str(), name.c_str(), description.c_str());
+00715 }
+00716
+00717 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawLD"</font>))
+00718 newmod = <font class="keyword">new</font> RawLD(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str());
+00719
+00720 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawLD4"</font>))
+00721 newmod = <font class="keyword">new</font> RawLD4(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str());
+00722
+00723 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"zLD"</font>)) {
+00724 SWCompress *compress = 0;
+00725 <font class="keywordtype">int</font> blockCount;
+00726 misc1 = ((entry = section.find(<font class="stringliteral">"BlockCount"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"200"</font>;
+00727 blockCount = atoi(misc1.c_str());
+00728 blockCount = (blockCount) ? blockCount : 200;
+00729
+00730 misc1 = ((entry = section.find(<font class="stringliteral">"CompressType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"LZSS"</font>;
+00731 <font class="preprocessor">#ifndef EXCLUDEZLIB</font>
+00732 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"ZIP"</font>))
+00733 compress = <font class="keyword">new</font> ZipCompress();
+00734 <font class="keywordflow">else</font>
+00735 <font class="preprocessor">#endif</font>
+00736 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"LZSS"</font>))
+00737 compress = <font class="keyword">new</font> LZSSCompress();
+00738
+00739 <font class="keywordflow">if</font> (compress) {
+00740 newmod = <font class="keyword">new</font> zLD(datapath.c_str(), name.c_str(), description.c_str(), blockCount, compress, 0, enc, direction, markup, lang.c_str());
+00741 }
+00742 }
+00743
+00744 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawGenBook"</font>)) {
+00745 newmod = <font class="keyword">new</font> RawGenBook(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str());
+00746 }
+00747 <font class="comment">// if a specific module type is set in the config, use this</font>
+00748 <font class="keywordflow">if</font> ((entry = section.find(<font class="stringliteral">"Type"</font>)) != section.end())
+00749 newmod-&gt;<a class="code" href="class_s_w_module.html#a17">Type</a>(entry-&gt;second.c_str());
+00750
+00751 newmod-&gt;<a class="code" href="class_s_w_module.html#a5">setConfig</a>(&amp;section);
+00752 <font class="keywordflow">return</font> newmod;
+00753 }
+00754
+00755
+00756 <font class="keywordtype">void</font> SWMgr::AddGlobalOptions(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) {
+00757 <font class="keywordflow">for</font> (;start != end; start++) {
+00758 FilterMap::iterator it;
+00759 it = optionFilters.find((*start).second);
+00760 <font class="keywordflow">if</font> (it != optionFilters.end()) {
+00761 module-&gt;<a class="code" href="class_s_w_module.html#a54">AddOptionFilter</a>((*it).second); <font class="comment">// add filter to module and option as a valid option</font>
+00762 OptionsList::iterator loop;
+00763 <font class="keywordflow">for</font> (loop = options.begin(); loop != options.end(); loop++) {
+00764 <font class="keywordflow">if</font> (!strcmp((*loop).c_str(), (*it).second-&gt;getOptionName()))
+00765 <font class="keywordflow">break</font>;
+00766 }
+00767 <font class="keywordflow">if</font> (loop == options.end()) <font class="comment">// if we have not yet included the option</font>
+00768 options.push_back((*it).second-&gt;getOptionName());
+00769 }
+00770 }
+00771 <font class="keywordflow">if</font> (filterMgr)
+00772 filterMgr-&gt;AddGlobalOptions(module, section, start, end);
+00773 }
+00774
+00775
+00776 <font class="keywordtype">void</font> SWMgr::AddLocalOptions(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section, ConfigEntMap::iterator start, ConfigEntMap::iterator end)
+00777 {
+00778 <font class="keywordflow">for</font> (;start != end; start++) {
+00779 FilterMap::iterator it;
+00780 it = optionFilters.find((*start).second);
+00781 <font class="keywordflow">if</font> (it != optionFilters.end()) {
+00782 module-&gt;<a class="code" href="class_s_w_module.html#a54">AddOptionFilter</a>((*it).second); <font class="comment">// add filter to module</font>
+00783 }
+00784 }
+00785
+00786 <font class="keywordflow">if</font> (filterMgr)
+00787 filterMgr-&gt;AddLocalOptions(module, section, start, end);
+00788 }
+00789
+00790
+<a name="l00791"></a><a class="code" href="class_s_w_mgr.html#b11">00791</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b11">SWMgr::AddRawFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section) {
+00792 string sourceformat, cipherKey;
+00793 ConfigEntMap::iterator entry;
+00794
+00795 cipherKey = ((entry = section.find(<font class="stringliteral">"CipherKey"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00796 <font class="keywordflow">if</font> (!cipherKey.empty()) {
+00797 SWFilter *cipherFilter = <font class="keyword">new</font> CipherFilter(cipherKey.c_str());
+00798 cipherFilters.insert(FilterMap::value_type(module-&gt;<a class="code" href="class_s_w_module.html#a15">Name</a>(), cipherFilter));
+00799 cleanupFilters.push_back(cipherFilter);
+00800 module-&gt;<a class="code" href="class_s_w_module.html#a51">AddRawFilter</a>(cipherFilter);
+00801 }
+00802
+00803 <font class="keywordflow">if</font> (filterMgr)
+00804 filterMgr-&gt;AddRawFilters(module, section);
+00805 }
+00806
+00807
+<a name="l00808"></a><a class="code" href="class_s_w_mgr.html#b8">00808</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b8">SWMgr::AddEncodingFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section) {
+00809
+00810 <font class="keywordflow">if</font> (filterMgr)
+00811 filterMgr-&gt;AddEncodingFilters(module, section);
+00812 }
+00813
+00814
+<a name="l00815"></a><a class="code" href="class_s_w_mgr.html#b9">00815</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b9">SWMgr::AddRenderFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section) {
+00816 string sourceformat;
+00817 ConfigEntMap::iterator entry;
+00818
+00819 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00820
+00821 <font class="comment">// Temporary: To support old module types</font>
+00822 <font class="comment">// TODO: Remove at 1.6.0 release?</font>
+00823 <font class="keywordflow">if</font> (sourceformat.empty()) {
+00824 sourceformat = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00825 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"RawGBF"</font>))
+00826 sourceformat = <font class="stringliteral">"GBF"</font>;
+00827 <font class="keywordflow">else</font> sourceformat = <font class="stringliteral">""</font>;
+00828 }
+00829
+00830 <font class="comment">// process module - eg. follows</font>
+00831 <font class="comment">// if (!stricmp(sourceformat.c_str(), "GBF")) {</font>
+00832 <font class="comment">// module-&gt;AddRenderFilter(gbftortf);</font>
+00833 <font class="comment">// }</font>
+00834
+00835 <font class="keywordflow">if</font> (filterMgr)
+00836 filterMgr-&gt;AddRenderFilters(module, section);
+00837
+00838 }
+00839
+00840
+<a name="l00841"></a><a class="code" href="class_s_w_mgr.html#b10">00841</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b10">SWMgr::AddStripFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &amp;section)
+00842 {
+00843 string sourceformat;
+00844 ConfigEntMap::iterator entry;
+00845
+00846 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00847 <font class="comment">// Temporary: To support old module types</font>
+00848 <font class="keywordflow">if</font> (sourceformat.empty()) {
+00849 sourceformat = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00850 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"RawGBF"</font>))
+00851 sourceformat = <font class="stringliteral">"GBF"</font>;
+00852 <font class="keywordflow">else</font> sourceformat = <font class="stringliteral">""</font>;
+00853 }
+00854
+00855 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"GBF"</font>)) {
+00856 module-&gt;<a class="code" href="class_s_w_module.html#a49">AddStripFilter</a>(gbfplain);
+00857 }
+00858 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"ThML"</font>)) {
+00859 module-&gt;<a class="code" href="class_s_w_module.html#a49">AddStripFilter</a>(thmlplain);
+00860 }
+00861
+00862 <font class="keywordflow">if</font> (filterMgr)
+00863 filterMgr-&gt;AddStripFilters(module, section);
+00864
+00865 }
+00866
+00867
+00868 <font class="keywordtype">void</font> SWMgr::CreateMods() {
+00869 SectionMap::iterator it;
+00870 ConfigEntMap::iterator start;
+00871 ConfigEntMap::iterator end;
+00872 ConfigEntMap::iterator entry;
+00873 <a class="code" href="class_s_w_module.html">SWModule</a> *newmod;
+00874 string driver, misc1;
+00875 <font class="keywordflow">for</font> (it = <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.begin(); it != <a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m1">Sections</a>.end(); it++) {
+00876 ConfigEntMap &amp;section = (*it).second;
+00877 newmod = 0;
+00878
+00879 driver = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>;
+00880 <font class="keywordflow">if</font> (!driver.empty()) {
+00881 newmod = CreateMod((*it).first, driver, section);
+00882 <font class="keywordflow">if</font> (newmod) {
+00883 start = (*it).second.lower_bound(<font class="stringliteral">"GlobalOptionFilter"</font>);
+00884 end = (*it).second.upper_bound(<font class="stringliteral">"GlobalOptionFilter"</font>);
+00885 AddGlobalOptions(newmod, section, start, end);
+00886
+00887 start = (*it).second.lower_bound(<font class="stringliteral">"LocalOptionFilter"</font>);
+00888 end = (*it).second.upper_bound(<font class="stringliteral">"LocalOptionFilter"</font>);
+00889 AddLocalOptions(newmod, section, start, end);
+00890
+00891 <a class="code" href="class_s_w_mgr.html#b11">AddRawFilters</a>(newmod, section);
+00892 <a class="code" href="class_s_w_mgr.html#b10">AddStripFilters</a>(newmod, section);
+00893 <a class="code" href="class_s_w_mgr.html#b9">AddRenderFilters</a>(newmod, section);
+00894 <a class="code" href="class_s_w_mgr.html#b8">AddEncodingFilters</a>(newmod, section);
+00895
+00896 <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.insert(ModMap::value_type(newmod-&gt;<a class="code" href="class_s_w_module.html#a15">Name</a>(), newmod));
+00897 }
+00898 }
+00899 }
+00900 }
+00901
+00902
+00903 <font class="keywordtype">void</font> SWMgr::DeleteMods() {
+00904
+00905 ModMap::iterator it;
+00906
+00907 <font class="keywordflow">for</font> (it = <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.begin(); it != <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.end(); it++)
+00908 <font class="keyword">delete</font> (*it).second;
+00909
+00910 <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.clear();
+00911 }
+00912
+00913
+<a name="l00914"></a><a class="code" href="class_s_w_mgr.html#a4">00914</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#a4">SWMgr::InstallScan</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *dirname)
+00915 {
+00916 DIR *dir;
+00917 <font class="keyword">struct </font>dirent *ent;
+00918 <font class="keywordtype">int</font> conffd = 0;
+00919 string newmodfile;
+00920 string targetName;
+00921
+00922 <font class="keywordflow">if</font> (!access(dirname, 04)) {
+00923 <font class="keywordflow">if</font> ((dir = opendir(dirname))) {
+00924 rewinddir(dir);
+00925 <font class="keywordflow">while</font> ((ent = readdir(dir))) {
+00926 <font class="keywordflow">if</font> ((strcmp(ent-&gt;d_name, <font class="stringliteral">"."</font>)) &amp;&amp; (strcmp(ent-&gt;d_name, <font class="stringliteral">".."</font>))) {
+00927 newmodfile = dirname;
+00928 <font class="keywordflow">if</font> ((dirname[strlen(dirname)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (dirname[strlen(dirname)-1] != <font class="charliteral">'/'</font>))
+00929 newmodfile += <font class="stringliteral">"/"</font>;
+00930 newmodfile += ent-&gt;d_name;
+00931 <font class="keywordflow">if</font> (configType) {
+00932 <font class="keywordflow">if</font> (<a class="code" href="class_s_w_mgr.html#m0">config</a> &gt; 0)
+00933 close(conffd);
+00934 targetName = configPath;
+00935 <font class="keywordflow">if</font> ((configPath[strlen(configPath)-1] != <font class="charliteral">'\\'</font>) &amp;&amp; (configPath[strlen(configPath)-1] != <font class="charliteral">'/'</font>))
+00936 targetName += <font class="stringliteral">"/"</font>;
+00937 targetName += ent-&gt;d_name;
+00938 conffd = open(targetName.c_str(), O_WRONLY|O_CREAT, S_IREAD|S_IWRITE);
+00939 }
+00940 <font class="keywordflow">else</font> {
+00941 <font class="keywordflow">if</font> (conffd &lt; 1) {
+00942 conffd = open(<a class="code" href="class_s_w_mgr.html#m0">config</a>-&gt;<a class="code" href="class_s_w_config.html#m0">filename</a>.c_str(), O_WRONLY|O_APPEND);
+00943 <font class="keywordflow">if</font> (conffd &gt; 0)
+00944 lseek(conffd, 0L, SEEK_END);
+00945 }
+00946 }
+00947 AddModToConfig(conffd, newmodfile.c_str());
+00948 unlink(newmodfile.c_str());
+00949 }
+00950 }
+00951 <font class="keywordflow">if</font> (conffd &gt; 0)
+00952 close(conffd);
+00953 closedir(dir);
+00954 }
+00955 }
+00956 }
+00957
+00958
+00959 <font class="keywordtype">char</font> SWMgr::AddModToConfig(<font class="keywordtype">int</font> conffd, <font class="keyword">const</font> <font class="keywordtype">char</font> *fname)
+00960 {
+00961 <font class="keywordtype">int</font> modfd;
+00962 <font class="keywordtype">char</font> ch;
+00963
+00964 SWLog::systemlog-&gt;LogTimedInformation(<font class="stringliteral">"Found new module [%s]. Installing..."</font>, fname);
+00965 modfd = open(fname, O_RDONLY);
+00966 ch = <font class="charliteral">'\n'</font>;
+00967 write(conffd, &amp;ch, 1);
+00968 <font class="keywordflow">while</font> (read(modfd, &amp;ch, 1) == 1)
+00969 write(conffd, &amp;ch, 1);
+00970 ch = <font class="charliteral">'\n'</font>;
+00971 write(conffd, &amp;ch, 1);
+00972 close(modfd);
+00973 <font class="keywordflow">return</font> 0;
+00974 }
+00975
+00976
+<a name="l00977"></a><a class="code" href="class_s_w_mgr.html#a6">00977</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#a6">SWMgr::setGlobalOption</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *option, <font class="keyword">const</font> <font class="keywordtype">char</font> *value)
+00978 {
+00979 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) {
+00980 <font class="keywordflow">if</font> ((*it).second-&gt;getOptionName()) {
+00981 <font class="keywordflow">if</font> (!stricmp(option, (*it).second-&gt;getOptionName()))
+00982 (*it).second-&gt;setOptionValue(value);
+00983 }
+00984 }
+00985 }
+00986
+00987
+<a name="l00988"></a><a class="code" href="class_s_w_mgr.html#a7">00988</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_mgr.html#a7">SWMgr::getGlobalOption</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *option)
+00989 {
+00990 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) {
+00991 <font class="keywordflow">if</font> ((*it).second-&gt;getOptionName()) {
+00992 <font class="keywordflow">if</font> (!stricmp(option, (*it).second-&gt;getOptionName()))
+00993 <font class="keywordflow">return</font> (*it).second-&gt;getOptionValue();
+00994 }
+00995 }
+00996 <font class="keywordflow">return</font> 0;
+00997 }
+00998
+00999
+<a name="l01000"></a><a class="code" href="class_s_w_mgr.html#a8">01000</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_mgr.html#a8">SWMgr::getGlobalOptionTip</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *option)
+01001 {
+01002 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) {
+01003 <font class="keywordflow">if</font> ((*it).second-&gt;getOptionName()) {
+01004 <font class="keywordflow">if</font> (!stricmp(option, (*it).second-&gt;getOptionName()))
+01005 <font class="keywordflow">return</font> (*it).second-&gt;getOptionTip();
+01006 }
+01007 }
+01008 <font class="keywordflow">return</font> 0;
+01009 }
+01010
+01011
+<a name="l01012"></a><a class="code" href="class_s_w_mgr.html#a9">01012</a> OptionsList <a class="code" href="class_s_w_mgr.html#a9">SWMgr::getGlobalOptions</a>()
+01013 {
+01014 <font class="keywordflow">return</font> options;
+01015 }
+01016
+01017
+01018 OptionsList SWMgr::getGlobalOptionValues(<font class="keyword">const</font> <font class="keywordtype">char</font> *option)
+01019 {
+01020 OptionsList options;
+01021 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) {
+01022 <font class="keywordflow">if</font> ((*it).second-&gt;getOptionName()) {
+01023 <font class="keywordflow">if</font> (!stricmp(option, (*it).second-&gt;getOptionName())) {
+01024 options = (*it).second-&gt;getOptionValues();
+01025 <font class="keywordflow">break</font>; <font class="comment">// just find the first one. All option filters with the same option name should expect the same values</font>
+01026 }
+01027 }
+01028 }
+01029 <font class="keywordflow">return</font> options;
+01030 }
+01031
+01032
+<a name="l01033"></a><a class="code" href="class_s_w_mgr.html#a11">01033</a> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_mgr.html#a11">SWMgr::setCipherKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *modName, <font class="keyword">const</font> <font class="keywordtype">char</font> *key) {
+01034 FilterMap::iterator it;
+01035 ModMap::iterator it2;
+01036
+01037 <font class="comment">// check for filter that already exists</font>
+01038 it = cipherFilters.find(modName);
+01039 <font class="keywordflow">if</font> (it != cipherFilters.end()) {
+01040 ((CipherFilter *)(*it).second)-&gt;getCipher()-&gt;setCipherKey(key);
+01041 <font class="keywordflow">return</font> 0;
+01042 }
+01043 <font class="comment">// check if module exists</font>
+01044 <font class="keywordflow">else</font> {
+01045 it2 = <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.find(modName);
+01046 <font class="keywordflow">if</font> (it2 != <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.end()) {
+01047 SWFilter *cipherFilter = <font class="keyword">new</font> CipherFilter(key);
+01048 cipherFilters.insert(FilterMap::value_type(modName, cipherFilter));
+01049 cleanupFilters.push_back(cipherFilter);
+01050 (*it2).second-&gt;AddRawFilter(cipherFilter);
+01051 <font class="keywordflow">return</font> 0;
+01052 }
+01053 }
+01054 <font class="keywordflow">return</font> -1;
+01055 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swmgr_8h-source.html b/doc/api-documentation/html/swmgr_8h-source.html
new file mode 100644
index 0000000..b70e2c0
--- /dev/null
+++ b/doc/api-documentation/html/swmgr_8h-source.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swmgr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swmgr.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swmgr.h - definition of class SWMgr used to interact with an install</font>
+00003 <font class="comment"> * base of sword modules.</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swmgr_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00039 <font class="preprocessor">#ifndef SWMGR_H</font>
+00040 <font class="preprocessor"></font><font class="preprocessor">#define SWMGR_H</font>
+00041 <font class="preprocessor"></font>
+00042 <font class="preprocessor">#include &lt;sys/types.h&gt;</font>
+00043 <font class="preprocessor">#include &lt;string&gt;</font>
+00044 <font class="preprocessor">#include &lt;map&gt;</font>
+00045 <font class="preprocessor">#include &lt;list&gt;</font>
+00046 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00047 <font class="preprocessor">#include &lt;swconfig.h&gt;</font>
+00048 <font class="preprocessor">#include &lt;swlog.h&gt;</font>
+00049 <font class="preprocessor">#include &lt;swfiltermgr.h&gt;</font>
+00050
+00051 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00052
+00053 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00054
+00055 <font class="keyword">typedef</font> map &lt; string, SWModule *, less &lt; string &gt; &gt;ModMap;
+00056 <font class="keyword">typedef</font> list &lt; string &gt; OptionsList;
+00057 <font class="keyword">typedef</font> map &lt; string, SWFilter * &gt;FilterMap;
+00058
+<a name="l00069"></a><a class="code" href="class_s_w_mgr.html">00069</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_mgr.html">SWMgr</a> {
+00070
+00071 <font class="keyword">private</font>:
+00072 <font class="keywordtype">void</font> commonInit(<a class="code" href="class_s_w_config.html">SWConfig</a> * iconfig, <a class="code" href="class_s_w_config.html">SWConfig</a> * isysconfig, <font class="keywordtype">bool</font> autoload, SWFilterMgr *filterMgr);
+00073
+00074 <font class="keyword">protected</font>:
+00075 SWFilterMgr *filterMgr; <font class="comment">//made protected because because BibleTime needs it</font>
+00076 <a class="code" href="class_s_w_config.html">SWConfig</a> * myconfig; <font class="comment">//made protected because because BibleTime needs it</font>
+00077 <a class="code" href="class_s_w_config.html">SWConfig</a> *mysysconfig;
+00078 <a class="code" href="class_s_w_config.html">SWConfig</a> *homeConfig;
+00079 <font class="keywordtype">void</font> CreateMods ();
+00080 <a class="code" href="class_s_w_module.html">SWModule</a> *CreateMod (string name, string driver, ConfigEntMap &amp; section);
+00081 <font class="keywordtype">void</font> DeleteMods ();
+00082 <font class="keywordtype">char</font> configType; <font class="comment">// 0 = file; 1 = directory</font>
+00083 FilterMap optionFilters;
+00084 FilterMap cipherFilters;
+00085 SWFilter *gbfplain;
+00086 SWFilter *thmlplain;
+00087 FilterList cleanupFilters;
+00088 OptionsList options;
+00089 <font class="keyword">virtual</font> <font class="keywordtype">void</font> init (); <font class="comment">// use to initialize before loading modules</font>
+00090 <font class="keyword">virtual</font> <font class="keywordtype">char</font> AddModToConfig (<font class="keywordtype">int</font> conffd, <font class="keyword">const</font> <font class="keywordtype">char</font> *fname);
+00091 <font class="keyword">virtual</font> <font class="keywordtype">void</font> loadConfigDir (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath);
+00092 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddGlobalOptions (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section,
+00093 ConfigEntMap::iterator start,
+00094 ConfigEntMap::iterator end);
+00095 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddLocalOptions (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section,
+00096 ConfigEntMap::iterator start,
+00097 ConfigEntMap::iterator end);
+00098
+00104 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddEncodingFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00110 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddRenderFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00116 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddStripFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00122 <font class="keyword">virtual</font> <font class="keywordtype">void</font> AddRawFilters (<a class="code" href="class_s_w_module.html">SWModule</a> * module, ConfigEntMap &amp; section);
+00123
+00124 <font class="keyword">public</font>:
+00125
+00130 <font class="keyword">static</font> <font class="keywordtype">bool</font> debug;
+00131 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *globalConfPath;
+00135 <font class="keyword">static</font> <font class="keywordtype">void</font> findConfig (<font class="keywordtype">char</font> *configType, <font class="keywordtype">char</font> **prefixPath,
+00136 <font class="keywordtype">char</font> **configPath);
+<a name="l00145"></a><a class="code" href="class_s_w_mgr.html#m0">00145</a> <a class="code" href="class_s_w_config.html">SWConfig</a> *config;
+00149 <a class="code" href="class_s_w_config.html">SWConfig</a> *sysconfig;
+<a name="l00172"></a><a class="code" href="class_s_w_mgr.html#m2">00172</a> ModMap Modules;
+<a name="l00176"></a><a class="code" href="class_s_w_mgr.html#m3">00176</a> <font class="keywordtype">char</font> *prefixPath;
+00180 <font class="keywordtype">char</font> *configPath;
+00181
+00189 <a class="code" href="class_s_w_mgr.html">SWMgr</a> (<a class="code" href="class_s_w_config.html">SWConfig</a> * iconfig = 0, <a class="code" href="class_s_w_config.html">SWConfig</a> * isysconfig = 0, <font class="keywordtype">bool</font> autoload = <font class="keyword">true</font>, SWFilterMgr *filterMgr = 0);
+00194 <a class="code" href="class_s_w_mgr.html">SWMgr</a> (SWFilterMgr *filterMgr);
+00204 <a class="code" href="class_s_w_mgr.html">SWMgr</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *iConfigPath, <font class="keywordtype">bool</font> autoload = <font class="keyword">true</font>, SWFilterMgr *filterMgr = 0);
+00210 <font class="keyword">virtual</font> ~<a class="code" href="class_s_w_mgr.html">SWMgr</a> ();
+00214 <font class="keyword">virtual</font> <font class="keywordtype">void</font> InstallScan (<font class="keyword">const</font> <font class="keywordtype">char</font> *dir);
+00219 <font class="keyword">virtual</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> Load ();
+00227 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setGlobalOption (<font class="keyword">const</font> <font class="keywordtype">char</font> *option, <font class="keyword">const</font> <font class="keywordtype">char</font> *value);
+00232 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getGlobalOption (<font class="keyword">const</font> <font class="keywordtype">char</font> *option);
+00238 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getGlobalOptionTip (<font class="keyword">const</font> <font class="keywordtype">char</font> *option);
+00242 <font class="keyword">virtual</font> OptionsList getGlobalOptions ();
+00246 <font class="keyword">virtual</font> OptionsList getGlobalOptionValues (<font class="keyword">const</font> <font class="keywordtype">char</font> *option);
+00288 <font class="keyword">virtual</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> setCipherKey (<font class="keyword">const</font> <font class="keywordtype">char</font> *modName, <font class="keyword">const</font> <font class="keywordtype">char</font> *key);
+00289 };
+00290 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swmodule_8cpp-source.html b/doc/api-documentation/html/swmodule_8cpp-source.html
new file mode 100644
index 0000000..39e2cd0
--- /dev/null
+++ b/doc/api-documentation/html/swmodule_8cpp-source.html
@@ -0,0 +1,689 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swmodule.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swmodule.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swmodule.cpp -code for base class 'module'. Module is the basis for all</font>
+00003 <font class="comment"> * types of modules (e.g. texts, commentaries, maps, lexicons,</font>
+00004 <font class="comment"> * etc.)</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;regex.h&gt;</font> <font class="comment">// GNU</font>
+00011 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;versekey.h&gt;</font> <font class="comment">// KLUDGE for Search</font>
+00013 <font class="preprocessor">#ifndef _MSC_VER</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;iostream.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <a class="code" href="class_s_w_display.html">SWDisplay</a> SWModule::rawdisp;
+<a name="l00018"></a><a class="code" href="class_s_w_module.html#d0">00018</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#d0">SWModule::nullPercent</a>(<font class="keywordtype">char</font> percent, <font class="keywordtype">void</font> *percentUserData) {}
+00019
+00020 <font class="comment">/******************************************************************************</font>
+00021 <font class="comment"> * SWModule Constructor - Initializes data for instance of SWModule</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> * ENT: imodname - Internal name for module</font>
+00024 <font class="comment"> * imoddesc - Name to display to user for module</font>
+00025 <font class="comment"> * idisp - Display object to use for displaying</font>
+00026 <font class="comment"> * imodtype - Type of Module (All modules will be displayed with</font>
+00027 <font class="comment"> * others of same type under their modtype heading</font>
+00028 <font class="comment"> * unicode - if this module is unicode</font>
+00029 <font class="comment"> */</font>
+00030
+<a name="l00031"></a><a class="code" href="class_s_w_module.html#a0">00031</a> <a class="code" href="class_s_w_module.html#a0">SWModule::SWModule</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, <font class="keywordtype">char</font> *imodtype, SWTextEncoding encoding, SWTextDirection direction, SWTextMarkup markup, <font class="keyword">const</font> <font class="keywordtype">char</font>* imodlang)
+00032 {
+00033 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00034 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [1];
+00035 *entrybuf = 0;
+00036 config = &amp;ownConfig;
+00037 entrybufallocsize = 0;
+00038 modname = 0;
+00039 error = 0;
+00040 moddesc = 0;
+00041 modtype = 0;
+00042 modlang = 0;
+00043 this-&gt;encoding = encoding;
+00044 this-&gt;direction = direction;
+00045 this-&gt;markup = markup;
+00046 entrySize= -1;
+00047 <a class="code" href="class_s_w_module.html#n15">disp</a> = (idisp) ? idisp : &amp;rawdisp;
+00048 stdstr(&amp;modname, imodname);
+00049 stdstr(&amp;moddesc, imoddesc);
+00050 stdstr(&amp;modtype, imodtype);
+00051 stdstr(&amp;modlang, imodlang);
+00052 <a class="code" href="class_s_w_module.html#n18">stripFilters</a> = <font class="keyword">new</font> FilterList();
+00053 <a class="code" href="class_s_w_module.html#n19">rawFilters</a> = <font class="keyword">new</font> FilterList();
+00054 <a class="code" href="class_s_w_module.html#n20">renderFilters</a> = <font class="keyword">new</font> FilterList();
+00055 <a class="code" href="class_s_w_module.html#n21">optionFilters</a> = <font class="keyword">new</font> FilterList();
+00056 <a class="code" href="class_s_w_module.html#n22">encodingFilters</a> = <font class="keyword">new</font> FilterList();
+00057 skipConsecutiveLinks = <font class="keyword">true</font>;
+00058 procEntAttr = <font class="keyword">true</font>;
+00059 }
+00060
+00061
+00062 <font class="comment">/******************************************************************************</font>
+00063 <font class="comment"> * SWModule Destructor - Cleans up instance of SWModule</font>
+00064 <font class="comment"> */</font>
+00065
+<a name="l00066"></a><a class="code" href="class_s_w_module.html#a1">00066</a> <a class="code" href="class_s_w_module.html#a1">SWModule::~SWModule</a>()
+00067 {
+00068 <font class="keywordflow">if</font> (entrybuf)
+00069 <font class="keyword">delete</font> [] entrybuf;
+00070 <font class="keywordflow">if</font> (modname)
+00071 <font class="keyword">delete</font> [] modname;
+00072 <font class="keywordflow">if</font> (moddesc)
+00073 <font class="keyword">delete</font> [] moddesc;
+00074 <font class="keywordflow">if</font> (modtype)
+00075 <font class="keyword">delete</font> [] modtype;
+00076 <font class="keywordflow">if</font> (modlang)
+00077 <font class="keyword">delete</font> [] modlang;
+00078
+00079 <font class="keywordflow">if</font> (key) {
+00080 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00081 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00082 }
+00083
+00084 <a class="code" href="class_s_w_module.html#n18">stripFilters</a>-&gt;clear();
+00085 <a class="code" href="class_s_w_module.html#n19">rawFilters</a>-&gt;clear();
+00086 <a class="code" href="class_s_w_module.html#n20">renderFilters</a>-&gt;clear();
+00087 <a class="code" href="class_s_w_module.html#n21">optionFilters</a>-&gt;clear();
+00088 <a class="code" href="class_s_w_module.html#n22">encodingFilters</a>-&gt;clear();
+00089 entryAttributes.clear();
+00090
+00091 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n18">stripFilters</a>;
+00092 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n19">rawFilters</a>;
+00093 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n20">renderFilters</a>;
+00094 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n21">optionFilters</a>;
+00095 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n22">encodingFilters</a>;
+00096 }
+00097
+00098
+00099 <font class="comment">/******************************************************************************</font>
+00100 <font class="comment"> * SWModule::CreateKey - Allocates a key of specific type for module</font>
+00101 <font class="comment"> *</font>
+00102 <font class="comment"> * RET: pointer to allocated key</font>
+00103 <font class="comment"> */</font>
+00104
+<a name="l00105"></a><a class="code" href="class_s_w_module.html#a26">00105</a> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_module.html#a26">SWModule::CreateKey</a>()
+00106 {
+00107 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_s_w_key.html">SWKey</a>();
+00108 }
+00109
+00110
+00111 <font class="comment">/******************************************************************************</font>
+00112 <font class="comment"> * SWModule::Error - Gets and clears error status</font>
+00113 <font class="comment"> *</font>
+00114 <font class="comment"> * RET: error status</font>
+00115 <font class="comment"> */</font>
+00116
+<a name="l00117"></a><a class="code" href="class_s_w_module.html#a2">00117</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#a2">SWModule::Error</a>()
+00118 {
+00119 <font class="keywordtype">char</font> retval = error;
+00120
+00121 error = 0;
+00122 <font class="keywordflow">return</font> retval;
+00123 }
+00124
+00125
+00126 <font class="comment">/******************************************************************************</font>
+00127 <font class="comment"> * SWModule::Name - Sets/gets module name</font>
+00128 <font class="comment"> *</font>
+00129 <font class="comment"> * ENT: imodname - value which to set modname</font>
+00130 <font class="comment"> * [0] - only get</font>
+00131 <font class="comment"> *</font>
+00132 <font class="comment"> * RET: pointer to modname</font>
+00133 <font class="comment"> */</font>
+00134
+<a name="l00135"></a><a class="code" href="class_s_w_module.html#a15">00135</a> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a15">SWModule::Name</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname)
+00136 {
+00137 <font class="keywordflow">return</font> stdstr(&amp;modname, imodname);
+00138 }
+00139
+00140
+00141 <font class="comment">/******************************************************************************</font>
+00142 <font class="comment"> * SWModule::Description - Sets/gets module description</font>
+00143 <font class="comment"> *</font>
+00144 <font class="comment"> * ENT: imoddesc - value which to set moddesc</font>
+00145 <font class="comment"> * [0] - only get</font>
+00146 <font class="comment"> *</font>
+00147 <font class="comment"> * RET: pointer to moddesc</font>
+00148 <font class="comment"> */</font>
+00149
+<a name="l00150"></a><a class="code" href="class_s_w_module.html#a16">00150</a> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a16">SWModule::Description</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc)
+00151 {
+00152 <font class="keywordflow">return</font> stdstr(&amp;moddesc, imoddesc);
+00153 }
+00154
+00155
+00156 <font class="comment">/******************************************************************************</font>
+00157 <font class="comment"> * SWModule::Type - Sets/gets module type</font>
+00158 <font class="comment"> *</font>
+00159 <font class="comment"> * ENT: imodtype - value which to set modtype</font>
+00160 <font class="comment"> * [0] - only get</font>
+00161 <font class="comment"> *</font>
+00162 <font class="comment"> * RET: pointer to modtype</font>
+00163 <font class="comment"> */</font>
+00164
+<a name="l00165"></a><a class="code" href="class_s_w_module.html#a17">00165</a> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a17">SWModule::Type</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodtype)
+00166 {
+00167 <font class="keywordflow">return</font> stdstr(&amp;modtype, imodtype);
+00168 }
+00169
+00170 <font class="comment">/******************************************************************************</font>
+00171 <font class="comment"> * SWModule::Direction - Sets/gets module direction</font>
+00172 <font class="comment"> *</font>
+00173 <font class="comment"> * ENT: newdir - value which to set direction</font>
+00174 <font class="comment"> * [-1] - only get</font>
+00175 <font class="comment"> *</font>
+00176 <font class="comment"> * RET: char direction</font>
+00177 <font class="comment"> */</font>
+<a name="l00178"></a><a class="code" href="class_s_w_module.html#a18">00178</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#a18">SWModule::Direction</a>(<font class="keywordtype">signed</font> <font class="keywordtype">char</font> newdir) {
+00179 <font class="keywordflow">if</font> (newdir != -1)
+00180 direction = newdir;
+00181 <font class="keywordflow">return</font> direction;
+00182 }
+00183
+00184 <font class="comment">/******************************************************************************</font>
+00185 <font class="comment"> * SWModule::Encoding - Sets/gets module encoding</font>
+00186 <font class="comment"> *</font>
+00187 <font class="comment"> * ENT: newdir - value which to set direction</font>
+00188 <font class="comment"> * [-1] - only get</font>
+00189 <font class="comment"> *</font>
+00190 <font class="comment"> * RET: char encoding</font>
+00191 <font class="comment"> */</font>
+<a name="l00192"></a><a class="code" href="class_s_w_module.html#a19">00192</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#a19">SWModule::Encoding</a>(<font class="keywordtype">signed</font> <font class="keywordtype">char</font> newenc) {
+00193 <font class="keywordflow">if</font> (newenc != -1)
+00194 encoding = newenc;
+00195 <font class="keywordflow">return</font> encoding;
+00196 }
+00197
+00198 <font class="comment">/******************************************************************************</font>
+00199 <font class="comment"> * SWModule::Markup - Sets/gets module markup</font>
+00200 <font class="comment"> *</font>
+00201 <font class="comment"> * ENT: newdir - value which to set direction</font>
+00202 <font class="comment"> * [-1] - only get</font>
+00203 <font class="comment"> *</font>
+00204 <font class="comment"> * RET: char markup</font>
+00205 <font class="comment"> */</font>
+<a name="l00206"></a><a class="code" href="class_s_w_module.html#a20">00206</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#a20">SWModule::Markup</a>(<font class="keywordtype">signed</font> <font class="keywordtype">char</font> newmark) {
+00207 <font class="keywordflow">if</font> (newmark != -1)
+00208 markup = newmark;
+00209 <font class="keywordflow">return</font> markup;
+00210 }
+00211
+00212
+00213 <font class="comment">/******************************************************************************</font>
+00214 <font class="comment"> * SWModule::Lang - Sets/gets module language</font>
+00215 <font class="comment"> *</font>
+00216 <font class="comment"> * ENT: imodlang - value which to set modlang</font>
+00217 <font class="comment"> * [0] - only get</font>
+00218 <font class="comment"> *</font>
+00219 <font class="comment"> * RET: pointer to modname</font>
+00220 <font class="comment"> */</font>
+00221
+<a name="l00222"></a><a class="code" href="class_s_w_module.html#a21">00222</a> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a21">SWModule::Lang</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodlang)
+00223 {
+00224 <font class="keywordflow">return</font> stdstr(&amp;modlang, imodlang);
+00225 }
+00226
+00227
+00228 <font class="comment">/******************************************************************************</font>
+00229 <font class="comment"> * SWModule::Disp - Sets/gets display driver</font>
+00230 <font class="comment"> *</font>
+00231 <font class="comment"> * ENT: idisp - value which to set disp</font>
+00232 <font class="comment"> * [0] - only get</font>
+00233 <font class="comment"> *</font>
+00234 <font class="comment"> * RET: pointer to disp</font>
+00235 <font class="comment"> */</font>
+00236
+<a name="l00237"></a><a class="code" href="class_s_w_module.html#a14">00237</a> <a class="code" href="class_s_w_display.html">SWDisplay</a> *<a class="code" href="class_s_w_module.html#a14">SWModule::Disp</a>(<a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp)
+00238 {
+00239 <font class="keywordflow">if</font> (idisp)
+00240 <a class="code" href="class_s_w_module.html#n15">disp</a> = idisp;
+00241
+00242 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#n15">disp</a>;
+00243 }
+00244
+00245
+00246 <font class="comment">/******************************************************************************</font>
+00247 <font class="comment"> * SWModule::Display - Calls this modules display object and passes itself</font>
+00248 <font class="comment"> *</font>
+00249 <font class="comment"> * RET: error status</font>
+00250 <font class="comment"> */</font>
+00251
+<a name="l00252"></a><a class="code" href="class_s_w_module.html#a13">00252</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#a13">SWModule::Display</a>()
+00253 {
+00254 <a class="code" href="class_s_w_module.html#n15">disp</a>-&gt;<a class="code" href="class_s_w_display.html#a1">Display</a>(*<font class="keyword">this</font>);
+00255 <font class="keywordflow">return</font> 0;
+00256 }
+00257
+00258
+00259 <font class="comment">/******************************************************************************</font>
+00260 <font class="comment"> * SWModule::SetKey - Sets a key to this module for position to a particular</font>
+00261 <font class="comment"> * record or set of records</font>
+00262 <font class="comment"> *</font>
+00263 <font class="comment"> * ENT: ikey - key with which to set this module</font>
+00264 <font class="comment"> *</font>
+00265 <font class="comment"> * RET: error status</font>
+00266 <font class="comment"> */</font>
+00267
+<a name="l00268"></a><a class="code" href="class_s_w_module.html#a9">00268</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#a8">SWModule::SetKey</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) {
+00269 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a8">SetKey</a>(&amp;ikey);
+00270 }
+00271
+<a name="l00272"></a><a class="code" href="class_s_w_module.html#a8">00272</a> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#a8">SWModule::SetKey</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *ikey)
+00273 {
+00274 <a class="code" href="class_s_w_key.html">SWKey</a> *oldKey = 0;
+00275
+00276 <font class="keywordflow">if</font> (key) {
+00277 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) <font class="comment">// if we have our own copy</font>
+00278 oldKey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00279 }
+00280
+00281 <font class="keywordflow">if</font> (!ikey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) { <font class="comment">// if we are to keep our own copy</font>
+00282 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00283 *<a class="code" href="class_s_w_module.html#n6">key</a> = *ikey;
+00284 }
+00285 <font class="keywordflow">else</font> <a class="code" href="class_s_w_module.html#n6">key</a> = (<a class="code" href="class_s_w_key.html">SWKey</a> *)ikey; <font class="comment">// if we are to just point to an external key</font>
+00286
+00287 <font class="keywordflow">if</font> (oldKey)
+00288 <font class="keyword">delete</font> oldKey;
+00289
+00290 <font class="keywordflow">return</font> 0;
+00291 }
+00292
+00293
+00294 <font class="comment">/******************************************************************************</font>
+00295 <font class="comment"> * SWModule::KeyText - Sets/gets module KeyText</font>
+00296 <font class="comment"> *</font>
+00297 <font class="comment"> * ENT: ikeytext - value which to set keytext</font>
+00298 <font class="comment"> * [0] - only get</font>
+00299 <font class="comment"> *</font>
+00300 <font class="comment"> * RET: pointer to keytext</font>
+00301 <font class="comment"> */</font>
+00302
+<a name="l00303"></a><a class="code" href="class_s_w_module.html#a12">00303</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a12">SWModule::KeyText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikeytext)
+00304 {
+00305 <font class="keywordflow">if</font> (ikeytext)
+00306 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(ikeytext);
+00307
+00308 <font class="keywordflow">return</font> *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00309 }
+00310
+00311
+00312 <font class="comment">/******************************************************************************</font>
+00313 <font class="comment"> * SWModule::operator =(SW_POSITION) - Positions this modules to an entry</font>
+00314 <font class="comment"> *</font>
+00315 <font class="comment"> * ENT: p - position (e.g. TOP, BOTTOM)</font>
+00316 <font class="comment"> *</font>
+00317 <font class="comment"> * RET: *this</font>
+00318 <font class="comment"> */</font>
+00319
+<a name="l00320"></a><a class="code" href="class_s_w_module.html#a40">00320</a> <a class="code" href="class_s_w_module.html">SWModule</a> &amp;<a class="code" href="class_s_w_module.html#a40">SWModule::operator =</a>(SW_POSITION p)
+00321 {
+00322 *<a class="code" href="class_s_w_module.html#n6">key</a> = p;
+00323 <font class="keywordtype">char</font> saveError = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a6">Error</a>();
+00324
+00325 <font class="keywordflow">switch</font> (p) {
+00326 <font class="keywordflow">case</font> POS_TOP:
+00327 (*this)++;
+00328 (*this)--;
+00329 <font class="keywordflow">break</font>;
+00330
+00331 <font class="keywordflow">case</font> POS_BOTTOM:
+00332 (*this)--;
+00333 (*this)++;
+00334 <font class="keywordflow">break</font>;
+00335 }
+00336
+00337 error = saveError;
+00338 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00339 }
+00340
+00341
+00342 <font class="comment">/******************************************************************************</font>
+00343 <font class="comment"> * SWModule::operator += - Increments module key a number of entries</font>
+00344 <font class="comment"> *</font>
+00345 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00346 <font class="comment"> *</font>
+00347 <font class="comment"> * RET: *this</font>
+00348 <font class="comment"> */</font>
+00349
+<a name="l00350"></a><a class="code" href="class_s_w_module.html#a37">00350</a> <a class="code" href="class_s_w_module.html">SWModule</a> &amp;<a class="code" href="class_s_w_module.html#a37">SWModule::operator +=</a>(<font class="keywordtype">int</font> increment)
+00351 {
+00352 (*key) += increment;
+00353 error = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a6">Error</a>();
+00354
+00355 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00356 }
+00357
+00358
+00359 <font class="comment">/******************************************************************************</font>
+00360 <font class="comment"> * SWModule::operator -= - Decrements module key a number of entries</font>
+00361 <font class="comment"> *</font>
+00362 <font class="comment"> * ENT: decrement - Number of entries to jump backward</font>
+00363 <font class="comment"> *</font>
+00364 <font class="comment"> * RET: *this</font>
+00365 <font class="comment"> */</font>
+00366
+<a name="l00367"></a><a class="code" href="class_s_w_module.html#a36">00367</a> <a class="code" href="class_s_w_module.html">SWModule</a> &amp;<a class="code" href="class_s_w_module.html#a36">SWModule::operator -=</a>(<font class="keywordtype">int</font> increment)
+00368 {
+00369 (*key) -= increment;
+00370 error = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a6">Error</a>();
+00371
+00372 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00373 }
+00374
+00375
+00376 <font class="comment">/******************************************************************************</font>
+00377 <font class="comment"> * SWModule::Search - Searches a module for a string</font>
+00378 <font class="comment"> *</font>
+00379 <font class="comment"> * ENT: istr - string for which to search</font>
+00380 <font class="comment"> * searchType - type of search to perform</font>
+00381 <font class="comment"> * &gt;=0 - regex</font>
+00382 <font class="comment"> * -1 - phrase</font>
+00383 <font class="comment"> * -2 - multiword</font>
+00384 <font class="comment"> * flags - options flags for search</font>
+00385 <font class="comment"> * justCheckIfSupported - if set, don't search, only tell if this</font>
+00386 <font class="comment"> * function supports requested search.</font>
+00387 <font class="comment"> *</font>
+00388 <font class="comment"> * RET: listkey set to verses that contain istr</font>
+00389 <font class="comment"> */</font>
+00390
+<a name="l00391"></a><a class="code" href="class_s_w_module.html#a22">00391</a> <a class="code" href="class_list_key.html">ListKey</a> &amp;<a class="code" href="class_s_w_module.html#a22">SWModule::Search</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *istr, <font class="keywordtype">int</font> searchType, <font class="keywordtype">int</font> flags, <a class="code" href="class_s_w_key.html">SWKey</a> *scope, <font class="keywordtype">bool</font> *justCheckIfSupported, <font class="keywordtype">void</font> (*percent)(<font class="keywordtype">char</font>, <font class="keywordtype">void</font> *), <font class="keywordtype">void</font> *percentUserData)
+00392 {
+00393 <a class="code" href="class_s_w_key.html">SWKey</a> *savekey = 0;
+00394 <a class="code" href="class_s_w_key.html">SWKey</a> *searchkey = 0;
+00395 regex_t preg;
+00396 <a class="code" href="class_s_w_key.html">SWKey</a> textkey;
+00397 <font class="keywordtype">char</font> **words = 0;
+00398 <font class="keywordtype">char</font> *wordBuf = 0;
+00399 <font class="keywordtype">int</font> wordCount = 0;
+00400 <font class="keyword">const</font> <font class="keywordtype">char</font> *sres;
+00401 <a class="code" href="class_s_w_module.html#m0">terminateSearch</a> = <font class="keyword">false</font>;
+00402 <font class="keywordtype">char</font> perc = 1;
+00403 <font class="keywordtype">bool</font> savePEA = isProcessEntryAttributes();
+00404
+00405 processEntryAttributes(<font class="keyword">false</font>);
+00406 listkey.<a class="code" href="class_list_key.html#a4">ClearList</a>();
+00407
+00408 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) {
+00409 savekey = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00410 *savekey = *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00411 }
+00412 <font class="keywordflow">else</font> savekey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00413
+00414 searchkey = (scope)?scope-&gt;<a class="code" href="class_s_w_key.html#a3">clone</a>():(<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())?<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a3">clone</a>():0;
+00415 <font class="keywordflow">if</font> (searchkey) {
+00416 searchkey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>(1);
+00417 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*searchkey);
+00418 }
+00419
+00420 (*percent)(perc, percentUserData);
+00421 <font class="comment">// MAJOR KLUDGE: VerseKey::Index still return index within testament.</font>
+00422 <font class="comment">// VerseKey::NewIndex should be moved to Index and Index should be some</font>
+00423 <font class="comment">// VerseKey specific name</font>
+00424 <a class="code" href="class_verse_key.html">VerseKey</a> *vkcheck = 0;
+00425 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00426 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00427 <font class="preprocessor">#endif</font>
+00428 <font class="preprocessor"></font> vkcheck = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, <a class="code" href="class_s_w_module.html#n6">key</a>);
+00429 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00430 <font class="preprocessor"></font> }
+00431 <font class="keywordflow">catch</font> (...) {}
+00432 <font class="preprocessor">#endif</font>
+00433 <font class="preprocessor"></font> <font class="comment">// end MAJOR KLUDGE</font>
+00434
+00435 *<font class="keyword">this</font> = BOTTOM;
+00436 <font class="comment">// fix below when we find out the bug</font>
+00437 <font class="keywordtype">long</font> highIndex = (vkcheck)?32300<font class="comment">/*vkcheck-&gt;NewIndex()*/</font>:<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00438 <font class="keywordflow">if</font> (!highIndex)
+00439 highIndex = 1; <font class="comment">// avoid division by zero errors.</font>
+00440 *<font class="keyword">this</font> = TOP;
+00441 <font class="keywordflow">if</font> (searchType &gt;= 0) {
+00442 flags |=searchType|REG_NOSUB|REG_EXTENDED;
+00443 regcomp(&amp;preg, istr, flags);
+00444 }
+00445
+00446 (*percent)(++perc, percentUserData);
+00447 <font class="keywordflow">if</font> (searchType == -2) {
+00448 wordBuf = (<font class="keywordtype">char</font> *)calloc(<font class="keyword">sizeof</font>(<font class="keywordtype">char</font>), strlen(istr) + 1);
+00449 strcpy(wordBuf, istr);
+00450 words = (<font class="keywordtype">char</font> **)calloc(<font class="keyword">sizeof</font>(<font class="keywordtype">char</font> *), 10);
+00451 <font class="keywordtype">int</font> allocWords = 10;
+00452 words[wordCount] = strtok(wordBuf, <font class="stringliteral">" "</font>);
+00453 <font class="keywordflow">while</font> (words[wordCount]) {
+00454 wordCount++;
+00455 <font class="keywordflow">if</font> (wordCount == allocWords) {
+00456 allocWords+=10;
+00457 words = (<font class="keywordtype">char</font> **)realloc(words, <font class="keyword">sizeof</font>(<font class="keywordtype">char</font> *)*allocWords);
+00458 }
+00459 words[wordCount] = strtok(NULL, <font class="stringliteral">" "</font>);
+00460 }
+00461 }
+00462
+00463 perc = 5;
+00464 (*percent)(perc, percentUserData);
+00465
+00466 <font class="keywordflow">while</font> (!<a class="code" href="class_s_w_module.html#a2">Error</a>() &amp;&amp; !<a class="code" href="class_s_w_module.html#m0">terminateSearch</a>) {
+00467
+00468
+00469 <font class="keywordtype">long</font> mindex = 0;
+00470 <font class="keywordflow">if</font> (vkcheck)
+00471 mindex = vkcheck-&gt;<a class="code" href="class_verse_key.html#a33">NewIndex</a>();
+00472 <font class="keywordflow">else</font> mindex = <a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00473 <font class="keywordtype">float</font> per = (float)mindex / highIndex;
+00474 per *= 93;
+00475 per += 5;
+00476 <font class="keywordtype">char</font> newperc = (char)per;
+00477 <font class="comment">// char newperc = (char)(5+(93*(((float)((vkcheck)?vkcheck-&gt;NewIndex():key-&gt;Index()))/highIndex)));</font>
+00478 <font class="keywordflow">if</font> (newperc &gt; perc) {
+00479 perc = newperc;
+00480 (*percent)(perc, percentUserData);
+00481 }
+00482 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (newperc &lt; perc) {
+00483 <font class="preprocessor">#ifndef _MSC_VER</font>
+00484 <font class="preprocessor"></font> cerr &lt;&lt; <font class="stringliteral">"Serious error: new percentage complete is less than previous value\n"</font>;
+00485 cerr &lt;&lt; <font class="stringliteral">"using vk? "</font> &lt;&lt; ((vkcheck)?<font class="stringliteral">"yes"</font>:<font class="stringliteral">"no"</font>) &lt;&lt; <font class="stringliteral">"\n"</font>;
+00486 cerr &lt;&lt; <font class="stringliteral">"index: "</font> &lt;&lt; ((vkcheck)?vkcheck-&gt;<a class="code" href="class_verse_key.html#a33">NewIndex</a>():<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>()) &lt;&lt; <font class="stringliteral">"\n"</font>;
+00487 cerr &lt;&lt; <font class="stringliteral">"highIndex: "</font> &lt;&lt; highIndex &lt;&lt; <font class="stringliteral">"\n"</font>;
+00488 cerr &lt;&lt; <font class="stringliteral">"newperc =="</font> &lt;&lt; (int)newperc &lt;&lt; <font class="stringliteral">"%"</font> &lt;&lt; <font class="stringliteral">"is smaller than\n"</font>;
+00489 cerr &lt;&lt; <font class="stringliteral">"perc == "</font> &lt;&lt; (int )perc &lt;&lt; <font class="stringliteral">"% \n"</font>;
+00490 <font class="preprocessor">#endif</font>
+00491 <font class="preprocessor"></font> }
+00492 <font class="keywordflow">if</font> (searchType &gt;= 0) {
+00493 <font class="keywordflow">if</font> (!regexec(&amp;preg, <a class="code" href="class_s_w_module.html#a56">StripText</a>(), 0, 0, 0)) {
+00494 textkey = <a class="code" href="class_s_w_module.html#a12">KeyText</a>();
+00495 listkey &lt;&lt; textkey;
+00496 }
+00497 }
+00498 <font class="keywordflow">else</font> {
+00499 <font class="keywordflow">if</font> (searchType == -1) {
+00500 sres = ((flags &amp; REG_ICASE) == REG_ICASE) ? stristr(<a class="code" href="class_s_w_module.html#a56">StripText</a>(), istr) : strstr(<a class="code" href="class_s_w_module.html#a56">StripText</a>(), istr);
+00501 <font class="keywordflow">if</font> (sres) {
+00502 textkey = <a class="code" href="class_s_w_module.html#a12">KeyText</a>();
+00503 listkey &lt;&lt; textkey;
+00504 }
+00505 }
+00506 <font class="keywordflow">if</font> (searchType == -2) {
+00507 <font class="keywordtype">int</font> i;
+00508 <font class="keyword">const</font> <font class="keywordtype">char</font> *stripBuf = <a class="code" href="class_s_w_module.html#a56">StripText</a>();
+00509 <font class="keywordflow">for</font> (i = 0; i &lt; wordCount; i++) {
+00510 sres = ((flags &amp; REG_ICASE) == REG_ICASE) ? stristr(stripBuf, words[i]) : strstr(stripBuf, words[i]);
+00511 <font class="keywordflow">if</font> (!sres)
+00512 <font class="keywordflow">break</font>;
+00513 }
+00514 <font class="keywordflow">if</font> (i == wordCount) {
+00515 textkey = <a class="code" href="class_s_w_module.html#a12">KeyText</a>();
+00516 listkey &lt;&lt; textkey;
+00517 }
+00518
+00519 }
+00520 }
+00521 (*this)++;
+00522 }
+00523 <font class="keywordflow">if</font> (searchType &gt;= 0)
+00524 regfree(&amp;preg);
+00525
+00526 <font class="keywordflow">if</font> (searchType == -2) {
+00527 free(words);
+00528 free(wordBuf);
+00529 }
+00530
+00531 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*savekey);
+00532
+00533 <font class="keywordflow">if</font> (!savekey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00534 <font class="keyword">delete</font> savekey;
+00535
+00536 <font class="keywordflow">if</font> (searchkey)
+00537 <font class="keyword">delete</font> searchkey;
+00538
+00539 listkey = TOP;
+00540 processEntryAttributes(savePEA);
+00541 (*percent)(100, percentUserData);
+00542
+00543 <font class="keywordflow">return</font> listkey;
+00544 }
+00545
+00546
+00547 <font class="comment">/******************************************************************************</font>
+00548 <font class="comment"> * SWModule::StripText() - calls all stripfilters on current text</font>
+00549 <font class="comment"> *</font>
+00550 <font class="comment"> * ENT: buf - buf to massage instead of this modules current text</font>
+00551 <font class="comment"> * len - max len of buf</font>
+00552 <font class="comment"> *</font>
+00553 <font class="comment"> * RET: this module's text at specified key location massaged by Strip filters</font>
+00554 <font class="comment"> */</font>
+00555
+<a name="l00556"></a><a class="code" href="class_s_w_module.html#a56">00556</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a56">SWModule::StripText</a>(<font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len)
+00557 {
+00558 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a57">RenderText</a>(buf, len, <font class="keyword">false</font>);
+00559 }
+00560
+00561
+00562 <font class="comment">/******************************************************************************</font>
+00563 <font class="comment"> * SWModule::RenderText - calls all renderfilters on current text</font>
+00564 <font class="comment"> *</font>
+00565 <font class="comment"> * ENT: buf - buffer to Render instead of current module position</font>
+00566 <font class="comment"> *</font>
+00567 <font class="comment"> * RET: listkey set to verses that contain istr</font>
+00568 <font class="comment"> */</font>
+00569
+<a name="l00570"></a><a class="code" href="class_s_w_module.html#a57">00570</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a57">SWModule::RenderText</a>(<font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len, <font class="keywordtype">bool</font> render) {
+00571 entryAttributes.clear();
+00572 <font class="keywordtype">char</font> *tmpbuf = (buf) ? buf : <a class="code" href="class_s_w_module.html#a28">getRawEntry</a>();
+00573 <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_module.html#n6">key</a> = 0;
+00574 <font class="keyword">static</font> <font class="keywordtype">char</font> *null = <font class="stringliteral">""</font>;
+00575
+00576 <font class="keywordflow">if</font> (tmpbuf) {
+00577 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size = (len &lt; 0) ? ((<a class="code" href="class_s_w_module.html#a7">getEntrySize</a>()&lt;0) ? strlen(tmpbuf) : <a class="code" href="class_s_w_module.html#a7">getEntrySize</a>()) * FILTERPAD : len;
+00578 <font class="keywordflow">if</font> (size &gt; 0) {
+00579 key = (<a class="code" href="class_s_w_key.html">SWKey</a> *)*<font class="keyword">this</font>;
+00580
+00581 <a class="code" href="class_s_w_module.html#a55">optionFilter</a>(tmpbuf, size, key);
+00582
+00583 <font class="keywordflow">if</font> (render) {
+00584 <a class="code" href="class_s_w_module.html#a44">renderFilter</a>(tmpbuf, size, key);
+00585 <a class="code" href="class_s_w_module.html#a48">encodingFilter</a>(tmpbuf, size, key);
+00586 }
+00587 <font class="keywordflow">else</font> <a class="code" href="class_s_w_module.html#a50">stripFilter</a>(tmpbuf, size, key);
+00588 }
+00589 }
+00590 <font class="keywordflow">else</font> {
+00591 tmpbuf = null;
+00592 }
+00593
+00594 <font class="keywordflow">return</font> tmpbuf;
+00595 }
+00596
+00597
+00598 <font class="comment">/******************************************************************************</font>
+00599 <font class="comment"> * SWModule::RenderText - calls all renderfilters on current text</font>
+00600 <font class="comment"> *</font>
+00601 <font class="comment"> * ENT: tmpKey - key to use to grab text</font>
+00602 <font class="comment"> *</font>
+00603 <font class="comment"> * RET: this module's text at specified key location massaged by RenderFilers</font>
+00604 <font class="comment"> */</font>
+00605
+<a name="l00606"></a><a class="code" href="class_s_w_module.html#a59">00606</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a57">SWModule::RenderText</a>(<a class="code" href="class_s_w_key.html">SWKey</a> *tmpKey)
+00607 {
+00608 <a class="code" href="class_s_w_key.html">SWKey</a> *savekey;
+00609 <font class="keyword">const</font> <font class="keywordtype">char</font> *retVal;
+00610
+00611 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) {
+00612 savekey = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00613 *savekey = *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00614 }
+00615 <font class="keywordflow">else</font> savekey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00616
+00617 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*tmpKey);
+00618
+00619 retVal = <a class="code" href="class_s_w_module.html#a57">RenderText</a>();
+00620
+00621 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*savekey);
+00622
+00623 <font class="keywordflow">if</font> (!savekey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00624 <font class="keyword">delete</font> savekey;
+00625
+00626 <font class="keywordflow">return</font> retVal;
+00627 }
+00628
+00629
+00630 <font class="comment">/******************************************************************************</font>
+00631 <font class="comment"> * SWModule::StripText - calls all StripTextFilters on current text</font>
+00632 <font class="comment"> *</font>
+00633 <font class="comment"> * ENT: tmpKey - key to use to grab text</font>
+00634 <font class="comment"> *</font>
+00635 <font class="comment"> * RET: this module's text at specified key location massaged by Strip filters</font>
+00636 <font class="comment"> */</font>
+00637
+<a name="l00638"></a><a class="code" href="class_s_w_module.html#a58">00638</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a56">SWModule::StripText</a>(<a class="code" href="class_s_w_key.html">SWKey</a> *tmpKey)
+00639 {
+00640 <a class="code" href="class_s_w_key.html">SWKey</a> *savekey;
+00641 <font class="keyword">const</font> <font class="keywordtype">char</font> *retVal;
+00642
+00643 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_module.html#n6">key</a>-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>()) {
+00644 savekey = <a class="code" href="class_s_w_module.html#a26">CreateKey</a>();
+00645 *savekey = *<a class="code" href="class_s_w_module.html#n6">key</a>;
+00646 }
+00647 <font class="keywordflow">else</font> savekey = <a class="code" href="class_s_w_module.html#n6">key</a>;
+00648
+00649 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*tmpKey);
+00650
+00651 retVal = <a class="code" href="class_s_w_module.html#a56">StripText</a>();
+00652
+00653 <a class="code" href="class_s_w_module.html#a8">SetKey</a>(*savekey);
+00654
+00655 <font class="keywordflow">if</font> (!savekey-&gt;<a class="code" href="class_s_w_key.html#a4">Persist</a>())
+00656 <font class="keyword">delete</font> savekey;
+00657
+00658 <font class="keywordflow">return</font> retVal;
+00659 }
+00660
+00661
+<a name="l00662"></a><a class="code" href="class_s_w_module.html#a27">00662</a> <a class="code" href="class_s_w_module.html#a27">SWModule::operator const char*</a>() {
+00663 <font class="keywordflow">return</font> <a class="code" href="class_s_w_module.html#a57">RenderText</a>();
+00664 }
+00665
+00666
+00667 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWModule::getConfigEntry(<font class="keyword">const</font> <font class="keywordtype">char</font> *key)<font class="keyword"> const </font>{
+00668 ConfigEntMap::iterator it = config-&gt;find(<a class="code" href="class_s_w_module.html#n6">key</a>);
+00669 <font class="keywordflow">return</font> (it != config-&gt;end()) ? it-&gt;second.c_str() : 0;
+00670 }
+00671
+00672
+00673 <font class="keywordtype">void</font> SWModule::setConfig(ConfigEntMap *config) {
+00674 this-&gt;config = config;
+00675 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swmodule_8h-source.html b/doc/api-documentation/html/swmodule_8h-source.html
new file mode 100644
index 0000000..30dbe9e
--- /dev/null
+++ b/doc/api-documentation/html/swmodule_8h-source.html
@@ -0,0 +1,283 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swmodule.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swmodule.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swmodule.h - code for base class 'module'. Module is the basis for all</font>
+00003 <font class="comment"> * types of modules (e.g. texts, commentaries, maps, lexicons,</font>
+00004 <font class="comment"> * etc.)</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * $Id: swmodule_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00009 <font class="comment"> * CrossWire Bible Society</font>
+00010 <font class="comment"> * P. O. Box 2528</font>
+00011 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00014 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00015 <font class="comment"> * Free Software Foundation version 2.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00018 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00019 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00020 <font class="comment"> * General Public License for more details.</font>
+00021 <font class="comment"> *</font>
+00022 <font class="comment"> */</font>
+00023
+00024 <font class="preprocessor">#ifndef SWMODULE_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define SWMODULE_H</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#include &lt;swdisp.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00029 <font class="preprocessor">#include &lt;listkey.h&gt;</font>
+00030 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00031 <font class="preprocessor">#include &lt;swconfig.h&gt;</font>
+00032 <font class="preprocessor">#include &lt;swcacher.h&gt;</font>
+00033 <font class="preprocessor">#include &lt;list&gt;</font>
+00034
+00035 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00036 <font class="preprocessor">#include &lt;multimapwdef.h&gt;</font>
+00037
+00038 <font class="preprocessor">#define FILTERPAD 80</font>
+00039 <font class="preprocessor"></font>
+00040 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00041
+00042 <font class="keyword">typedef</font> list &lt; SWFilter * &gt;FilterList;
+00043
+00044 <font class="keyword">typedef</font> map &lt; string, string, less &lt; string &gt; &gt; AttributeValue;
+00045 <font class="keyword">typedef</font> map &lt; string, AttributeValue, less &lt; string &gt; &gt; AttributeList;
+00046 <font class="keyword">typedef</font> map &lt; string, AttributeList, less &lt; string &gt; &gt; AttributeTypeList;
+00047
+00048 <font class="preprocessor">#define SWTextDirection char</font>
+00049 <font class="preprocessor"></font><font class="preprocessor">#define SWTextEncoding char</font>
+00050 <font class="preprocessor"></font><font class="preprocessor">#define SWTextMarkup char</font>
+00051 <font class="preprocessor"></font>
+00052 <font class="keyword">enum</font> {DIRECTION_LTR = 0, DIRECTION_RTL, DIRECTION_BIDI};
+00053 <font class="keyword">enum</font> {FMT_UNKNOWN = 0, FMT_PLAIN, FMT_THML, FMT_GBF, FMT_HTML, FMT_HTMLHREF, FMT_RTF, FMT_OSIS};
+00054 <font class="keyword">enum</font> {ENC_UNKNOWN = 0, ENC_LATIN1, ENC_UTF8, ENC_SCSU, ENC_UTF16, ENC_RTF, ENC_HTML};
+00055
+<a name="l00064"></a><a class="code" href="class_s_w_module.html">00064</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_module.html">SWModule</a> : <font class="keyword">public</font> SWCacher {
+00065
+00066 <font class="keyword">protected</font>:
+00067
+00068 ConfigEntMap ownConfig;
+00069 ConfigEntMap *config;
+00070 <font class="keyword">mutable</font> AttributeTypeList entryAttributes;
+00071 <font class="keyword">mutable</font> <font class="keywordtype">bool</font> procEntAttr;
+00072
+00073 <font class="keywordtype">char</font> error;
+00074 <font class="keywordtype">bool</font> skipConsecutiveLinks;
+00075
+<a name="l00077"></a><a class="code" href="class_s_w_module.html#n6">00077</a> <a class="code" href="class_s_w_key.html">SWKey</a> *key;
+00078
+00079 <a class="code" href="class_list_key.html">ListKey</a> listkey;
+00080 <font class="keywordtype">char</font> *modname;
+00081 <font class="keywordtype">char</font> *moddesc;
+00082 <font class="keywordtype">char</font> *modtype;
+00083 <font class="keywordtype">char</font> *modlang;
+00084
+00085 <font class="keywordtype">char</font> direction;
+00086 <font class="keywordtype">char</font> markup;
+00087 <font class="keywordtype">char</font> encoding;
+00088
+<a name="l00090"></a><a class="code" href="class_s_w_module.html#n15">00090</a> <a class="code" href="class_s_w_display.html">SWDisplay</a> *disp;
+00091
+00092 <font class="keyword">static</font> <a class="code" href="class_s_w_display.html">SWDisplay</a> rawdisp;
+00093 <font class="keywordtype">char</font> *entrybuf;
+00094 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> entrybufallocsize;
+00095
+<a name="l00097"></a><a class="code" href="class_s_w_module.html#n18">00097</a> FilterList *stripFilters;
+00098
+<a name="l00100"></a><a class="code" href="class_s_w_module.html#n19">00100</a> FilterList *rawFilters;
+00101
+<a name="l00103"></a><a class="code" href="class_s_w_module.html#n20">00103</a> FilterList *renderFilters;
+00104
+<a name="l00106"></a><a class="code" href="class_s_w_module.html#n21">00106</a> FilterList *optionFilters;
+00107
+<a name="l00109"></a><a class="code" href="class_s_w_module.html#n22">00109</a> FilterList *encodingFilters;
+00110
+00111 <font class="keywordtype">int</font> entrySize;
+00112
+00113 <font class="keyword">public</font>:
+00120 <font class="keyword">static</font> <font class="keywordtype">void</font> nullPercent (<font class="keywordtype">char</font> percent, <font class="keywordtype">void</font> *userData);
+<a name="l00125"></a><a class="code" href="class_s_w_module.html#m0">00125</a> <font class="keywordtype">bool</font> terminateSearch;
+00138 <a class="code" href="class_s_w_module.html">SWModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, <font class="keywordtype">char</font> *imodtype = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, <font class="keyword">const</font> <font class="keywordtype">char</font>* modlang = 0);
+00141 <font class="keyword">virtual</font> ~ SWModule ();
+00146 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Error ();
+<a name="l00150"></a><a class="code" href="class_s_w_module.html#a3">00150</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">bool</font> isUnicode()<font class="keyword"> const </font>{<font class="keywordflow">return</font> (encoding == (char)ENC_UTF8 || encoding == (char)ENC_SCSU);}
+00151
+00152 <font class="comment">// These methods are useful for modules that come from a standard SWORD install (most do).</font>
+00153 <font class="comment">// SWMgr will call setConfig. The user may use getConfig and getConfigEntry (if they</font>
+00154 <font class="comment">// are not comfortable with, or don't wish to use stl maps).</font>
+00155 <font class="keyword">virtual</font> <font class="keyword">const</font> ConfigEntMap &amp;getConfig()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> *config; }
+00156 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setConfig(ConfigEntMap *config);
+00157 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getConfigEntry(<font class="keyword">const</font> <font class="keywordtype">char</font> *key) <font class="keyword">const</font>;
+00158
+<a name="l00162"></a><a class="code" href="class_s_w_module.html#a7">00162</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">int</font> getEntrySize()<font class="keyword"> const </font>{<font class="keywordflow">return</font> entrySize;}
+00170 <font class="keyword">virtual</font> <font class="keywordtype">char</font> SetKey (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *ikey);
+00176 <font class="keyword">virtual</font> <font class="keywordtype">char</font> SetKey (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey);
+<a name="l00180"></a><a class="code" href="class_s_w_module.html#a10">00180</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; Key ()<font class="keyword"> const </font>{
+00181 <font class="keywordflow">return</font> *key;
+00182 }
+<a name="l00189"></a><a class="code" href="class_s_w_module.html#a11">00189</a> <font class="keyword">virtual</font> <font class="keywordtype">char</font> Key (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; ikey) {
+00190 <font class="keywordflow">return</font> SetKey (ikey);
+00191 }
+00198 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *KeyText (<font class="keyword">const</font> <font class="keywordtype">char</font> *imodtype = 0);
+00203 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Display ();
+00210 <font class="keyword">virtual</font> <a class="code" href="class_s_w_display.html">SWDisplay</a> *Disp (<a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0);
+00217 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *Name (<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname = 0);
+00224 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *Description (<font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc = 0);
+00231 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *Type (<font class="keyword">const</font> <font class="keywordtype">char</font> *imodtype = 0);
+00238 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Direction(<font class="keywordtype">signed</font> <font class="keywordtype">char</font> newdir = -1);
+00245 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Encoding(<font class="keywordtype">signed</font> <font class="keywordtype">char</font> enc = -1);
+00252 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Markup(<font class="keywordtype">signed</font> <font class="keywordtype">char</font> enc = -1);
+00259 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *Lang (<font class="keyword">const</font> <font class="keywordtype">char</font> *imodlang = 0);
+00260
+00261 <font class="comment">// search methods</font>
+00262
+00274 <font class="keyword">virtual</font> <a class="code" href="class_list_key.html">ListKey</a> &amp; Search (<font class="keyword">const</font> <font class="keywordtype">char</font> *istr, <font class="keywordtype">int</font> searchType = 0, <font class="keywordtype">int</font> flags = 0,
+00275 <a class="code" href="class_s_w_key.html">SWKey</a> * scope = 0,
+00276 <font class="keywordtype">bool</font> * justCheckIfSupported = 0,
+00277 <font class="keywordtype">void</font> (*percent) (<font class="keywordtype">char</font>, <font class="keywordtype">void</font> *) = &amp;nullPercent,
+00278 <font class="keywordtype">void</font> *percentUserData = 0);
+00282 <font class="keyword">virtual</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> createSearchFramework () {
+00283 <font class="keywordflow">return</font> 0;
+00284 } <font class="comment">// special search framework</font>
+00288 <font class="comment"></font> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> hasSearchFramework () {
+00289 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00290 } <font class="comment">// special search framework</font>
+<a name="l00295"></a><a class="code" href="class_s_w_module.html#a25">00295</a> <font class="comment"></font> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> isSearchOptimallySupported (<font class="keyword">const</font> <font class="keywordtype">char</font> *istr, <font class="keywordtype">int</font> searchType,
+00296 <font class="keywordtype">int</font> flags, <a class="code" href="class_s_w_key.html">SWKey</a> * scope) {
+00297 <font class="keywordtype">bool</font> retVal = <font class="keyword">false</font>;
+00298 Search (istr, searchType, flags, scope, &amp;retVal);
+00299 <font class="keywordflow">return</font> retVal;
+00300 }
+00307 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *CreateKey ();
+00311 <font class="keyword">virtual</font> operator const char *();
+00316 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *getRawEntry () = 0;
+<a name="l00322"></a><a class="code" href="class_s_w_module.html#a29">00322</a> <font class="keyword">virtual</font> operator SWKey &amp; () {
+00323 <font class="keywordflow">return</font> *key;
+00324 }
+<a name="l00333"></a><a class="code" href="class_s_w_module.html#a30">00333</a> <font class="keyword">virtual</font> operator SWKey *() {
+00334 <font class="keywordflow">return</font> key;
+00335 }
+00336
+00337
+00338 <font class="comment">// write interface ----------------------------</font>
+<a name="l00342"></a><a class="code" href="class_s_w_module.html#a31">00342</a> <font class="comment"></font> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> isWritable () {
+00343 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00344 }
+<a name="l00349"></a><a class="code" href="class_s_w_module.html#d1">00349</a> <font class="keyword">static</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> createModule (<font class="keyword">const</font> <font class="keywordtype">char</font> *) {
+00350 <font class="keywordflow">return</font> -1;
+00351 }
+<a name="l00356"></a><a class="code" href="class_s_w_module.html#a32">00356</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; setentry (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00357 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00358 }
+<a name="l00363"></a><a class="code" href="class_s_w_module.html#a33">00363</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; operator &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) {
+00364 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00365 }
+<a name="l00370"></a><a class="code" href="class_s_w_module.html#a34">00370</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; operator &lt;&lt; (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *) {
+00371 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00372 }
+<a name="l00376"></a><a class="code" href="class_s_w_module.html#a35">00376</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> deleteEntry () {
+00377 }
+00378 <font class="comment">// end write interface ------------------------</font>
+00379
+00385 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; operator -= (<font class="keywordtype">int</font> decrement);
+00391 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; operator += (<font class="keywordtype">int</font> increment);
+<a name="l00395"></a><a class="code" href="class_s_w_module.html#a38">00395</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; operator++ (<font class="keywordtype">int</font>) {
+00396 <font class="keywordflow">return</font> *<font class="keyword">this</font> += 1;
+00397 }
+<a name="l00401"></a><a class="code" href="class_s_w_module.html#a39">00401</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; operator-- (<font class="keywordtype">int</font>) {
+00402 <font class="keywordflow">return</font> *<font class="keyword">this</font> -= 1;
+00403 }
+00409 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; operator = (SW_POSITION p);
+<a name="l00414"></a><a class="code" href="class_s_w_module.html#a41">00414</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; AddRenderFilter (SWFilter * newfilter) {
+00415 renderFilters-&gt;push_back (newfilter);
+00416 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00417 }
+<a name="l00422"></a><a class="code" href="class_s_w_module.html#a42">00422</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; RemoveRenderFilter (SWFilter * oldfilter) {
+00423 renderFilters-&gt;remove (oldfilter);
+00424 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00425 }
+<a name="l00431"></a><a class="code" href="class_s_w_module.html#a43">00431</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; ReplaceRenderFilter (SWFilter * oldfilter, SWFilter * newfilter) {
+00432 FilterList::iterator iter;
+00433 <font class="keywordflow">for</font> (iter = renderFilters-&gt;begin(); iter != renderFilters-&gt;end(); iter++)
+00434 <font class="keywordflow">if</font> (*iter == oldfilter)
+00435 *iter = newfilter;
+00436 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00437 }
+<a name="l00444"></a><a class="code" href="class_s_w_module.html#a44">00444</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> renderFilter (<font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> size, <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00445 filterBuffer(renderFilters, buf, size, key);
+00446 }
+<a name="l00451"></a><a class="code" href="class_s_w_module.html#a45">00451</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; AddEncodingFilter (SWFilter * newfilter) {
+00452 encodingFilters-&gt;push_back (newfilter);
+00453 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00454 }
+<a name="l00459"></a><a class="code" href="class_s_w_module.html#a46">00459</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; RemoveEncodingFilter (SWFilter * oldfilter) {
+00460 encodingFilters-&gt;remove (oldfilter);
+00461 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00462 }
+<a name="l00468"></a><a class="code" href="class_s_w_module.html#a47">00468</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; ReplaceEncodingFilter (SWFilter * oldfilter, SWFilter * newfilter) {
+00469 FilterList::iterator iter;
+00470 <font class="keywordflow">for</font> (iter = encodingFilters-&gt;begin(); iter != encodingFilters-&gt;end(); iter++)
+00471 <font class="keywordflow">if</font> (*iter == oldfilter)
+00472 *iter = newfilter;
+00473 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00474 }
+<a name="l00481"></a><a class="code" href="class_s_w_module.html#a48">00481</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> encodingFilter (<font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> size, <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00482 filterBuffer(encodingFilters, buf, size, key);
+00483 }
+<a name="l00488"></a><a class="code" href="class_s_w_module.html#a49">00488</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; AddStripFilter (SWFilter * newfilter) {
+00489 stripFilters-&gt;push_back (newfilter);
+00490 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00491 }
+<a name="l00498"></a><a class="code" href="class_s_w_module.html#a50">00498</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> stripFilter (<font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> size, <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00499 filterBuffer(stripFilters, buf, size, key);
+00500 }
+<a name="l00505"></a><a class="code" href="class_s_w_module.html#a51">00505</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; AddRawFilter (SWFilter * newfilter) {
+00506 rawFilters-&gt;push_back (newfilter);
+00507 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00508 }
+<a name="l00516"></a><a class="code" href="class_s_w_module.html#a52">00516</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> filterBuffer (FilterList *filters, <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> size, <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00517 FilterList::iterator it;
+00518 <font class="keywordflow">for</font> (it = filters-&gt;begin(); it != filters-&gt;end(); it++) {
+00519 (*it)-&gt;ProcessText(buf, size, key, <font class="keyword">this</font>);
+00520 }
+00521 }
+<a name="l00528"></a><a class="code" href="class_s_w_module.html#a53">00528</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> rawFilter (<font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> size, <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00529 buf[size] = 0;
+00530 filterBuffer(rawFilters, buf, size, key);
+00531 }
+<a name="l00536"></a><a class="code" href="class_s_w_module.html#a54">00536</a> <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; AddOptionFilter (SWFilter * newfilter) {
+00537 optionFilters-&gt;push_back (newfilter);
+00538 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00539 }
+<a name="l00546"></a><a class="code" href="class_s_w_module.html#a55">00546</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> optionFilter (<font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> size, <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00547 filterBuffer(optionFilters, buf, size, key);
+00548 }
+00556 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *StripText (<font class="keywordtype">char</font> *buf = 0, <font class="keywordtype">int</font> len = -1);
+00564 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *RenderText (<font class="keywordtype">char</font> *buf = 0, <font class="keywordtype">int</font> len = -1, <font class="keywordtype">bool</font> render = <font class="keyword">true</font>);
+00570 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *StripText (<a class="code" href="class_s_w_key.html">SWKey</a> * tmpKey);
+00576 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *RenderText (<a class="code" href="class_s_w_key.html">SWKey</a> * tmpKey);
+00577
+<a name="l00584"></a><a class="code" href="class_s_w_module.html#a60">00584</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> setSkipConsecutiveLinks(<font class="keywordtype">bool</font> val) { skipConsecutiveLinks = val; }
+00585 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> getSkipConsecutiveLinks() { <font class="keywordflow">return</font> skipConsecutiveLinks; }
+00586 <font class="keyword">virtual</font> AttributeTypeList &amp;getEntryAttributes()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> entryAttributes; }
+00587 <font class="keyword">virtual</font> <font class="keywordtype">void</font> processEntryAttributes(<font class="keywordtype">bool</font> val)<font class="keyword"> const </font>{ procEntAttr = val; }
+00588 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> isProcessEntryAttributes()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> procEntAttr; }
+00589 };
+00590
+00591
+00592 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swobject_8h-source.html b/doc/api-documentation/html/swobject_8h-source.html
new file mode 100644
index 0000000..785840c
--- /dev/null
+++ b/doc/api-documentation/html/swobject_8h-source.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swobject.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swobject.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef SWOBJECT_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define SWOBJECT_H</font>
+00003 <font class="preprocessor"></font>
+00004 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00005 <font class="preprocessor">#if !defined(__GNUC__) &amp;&amp; !defined(_WIN32_WCE)</font>
+00006 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00007 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00008 <font class="preprocessor">#endif</font>
+00009 <font class="preprocessor"></font>
+00010 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00012
+00013 <font class="preprocessor">#define SWDYNAMIC_CAST(className, object) (className *)((object)?((object-&gt;getClass()-&gt;isAssignableFrom(#className))?object:0):0)</font>
+00014 <font class="preprocessor"></font>
+<a name="l00018"></a><a class="code" href="class_s_w_class.html">00018</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_class.html">SWClass</a> {
+00019 <font class="keyword">private</font>:
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> **descends;
+00021
+00022 <font class="keyword">public</font>:
+00023 <a class="code" href="class_s_w_class.html">SWClass</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> **descends) {
+00024 this-&gt;descends = descends;
+00025 }
+00026
+00027 <font class="keywordtype">bool</font> isAssignableFrom(<font class="keyword">const</font> <font class="keywordtype">char</font> *className)<font class="keyword"> const </font>{
+00028 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; descends[i]; i++) {
+00029 <font class="keywordflow">if</font> (!stricmp(descends[i], className))
+00030 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00031 }
+00032 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00033 }
+00034 };
+00035
+<a name="l00041"></a><a class="code" href="class_s_w_object.html">00041</a> <font class="keyword">class </font><a class="code" href="class_s_w_object.html">SWObject</a> {
+00042 <font class="keyword">protected</font>:
+00043 <a class="code" href="class_s_w_class.html">SWClass</a> * myclass;
+00044
+00045 <font class="keyword">public</font>:
+<a name="l00049"></a><a class="code" href="class_s_w_object.html#a0">00049</a> <font class="keyword">const</font> <a class="code" href="class_s_w_class.html">SWClass</a> *<a class="code" href="class_s_w_object.html#a0">getClass</a> ()<font class="keyword"> const </font>{
+00050 <font class="keywordflow">return</font> myclass;
+00051 }
+00052 };
+00053
+00054 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swtext_8cpp-source.html b/doc/api-documentation/html/swtext_8cpp-source.html
new file mode 100644
index 0000000..e70b58f
--- /dev/null
+++ b/doc/api-documentation/html/swtext_8cpp-source.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swtext.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swtext.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swtext.cpp - code for base class 'SWText'- The basis for all text modules</font>
+00003 <font class="comment"> */</font>
+00004
+00005 <font class="preprocessor">#include &lt;swtext.h&gt;</font>
+00006 <font class="preprocessor">#include &lt;listkey.h&gt;</font>
+00007
+00008
+00009 <font class="comment">/******************************************************************************</font>
+00010 <font class="comment"> * SWText Constructor - Initializes data for instance of SWText</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * ENT: imodname - Internal name for module</font>
+00013 <font class="comment"> * imoddesc - Name to display to user for module</font>
+00014 <font class="comment"> * idisp - Display object to use for displaying</font>
+00015 <font class="comment"> */</font>
+00016
+<a name="l00017"></a><a class="code" href="class_s_w_text.html#a0">00017</a> <a class="code" href="class_s_w_text.html#a0">SWText::SWText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang): <a class="code" href="class_s_w_module.html">SWModule</a>(imodname, imoddesc, idisp, "Biblical Texts", enc, dir, mark, ilang)
+00018 {
+00019 <font class="keyword">delete</font> <a class="code" href="class_s_w_module.html#n6">key</a>;
+00020 <a class="code" href="class_s_w_module.html#n6">key</a> = <a class="code" href="class_s_w_text.html#a2">CreateKey</a>();
+00021 }
+00022
+00023
+00024 <font class="comment">/******************************************************************************</font>
+00025 <font class="comment"> * SWText Destructor - Cleans up instance of SWText</font>
+00026 <font class="comment"> */</font>
+00027
+00028 SWText::~SWText() {
+00029 }
+00030
+00031
+00032 <font class="comment">/******************************************************************************</font>
+00033 <font class="comment"> * SWText CreateKey - Create the correct key (VerseKey) for use with SWText</font>
+00034 <font class="comment"> */</font>
+00035
+<a name="l00036"></a><a class="code" href="class_s_w_text.html#a2">00036</a> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_text.html#a2">SWText::CreateKey</a>()
+00037 {
+00038 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>();
+00039 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swtext_8h-source.html b/doc/api-documentation/html/swtext_8h-source.html
new file mode 100644
index 0000000..0695cc7
--- /dev/null
+++ b/doc/api-documentation/html/swtext_8h-source.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swtext.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swtext.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swtext.h - code for base class 'SWText'. SWText is the basis for all</font>
+00003 <font class="comment"> * types of text modules</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swtext_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef SWTEXT_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define SWTEXT_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;listkey.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+<a name="l00034"></a><a class="code" href="class_s_w_text.html">00034</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_s_w_text.html">SWText</a>:<font class="keyword">public</font> <a class="code" href="class_s_w_module.html">SWModule</a>
+00035 {
+00036 <font class="keyword">public</font>:
+00043 <a class="code" href="class_s_w_text.html">SWText</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *imodname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *imoddesc = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00044 <font class="keyword">virtual</font> ~ SWText ();
+00047 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_module.html#a26">CreateKey</a> ();
+00048 };
+00049
+00050
+00051 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swunicod_8cpp-source.html b/doc/api-documentation/html/swunicod_8cpp-source.html
new file mode 100644
index 0000000..1cb64c1
--- /dev/null
+++ b/doc/api-documentation/html/swunicod_8cpp-source.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swunicod.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swunicod.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018
+00019 <font class="preprocessor">#include "swunicod.h"</font>
+00020 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>* UTF32to8 (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> utf32, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> * utf8) {
+00021 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i;
+00022 <font class="keywordflow">for</font> (i = 0; i &lt; 6; i++) utf8[i] = 0;
+00023
+00024 <font class="keywordflow">if</font> (utf32 &lt; 0x80) {
+00025 utf8[0] = (char)utf32;
+00026 }
+00027 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (utf32 &lt; 0x800) {
+00028 i = utf32 &amp; 0x3f;
+00029 utf8[1] = 0x80 | i;
+00030 utf32 &gt;&gt;= 6;
+00031
+00032 i = utf32 &amp; 0x1f;
+00033 utf8[0] = 0xc0 | i;
+00034 }
+00035 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (utf32 &lt; 0x10000) {
+00036 i = utf32 &amp; 0x3f;
+00037 utf8[2] = 0x80 | i;
+00038 utf32 &gt;&gt;= 6;
+00039
+00040 i = utf32 &amp; 0x3f;
+00041 utf8[1] = 0x80 | i;
+00042 utf32 &gt;&gt;= 6;
+00043
+00044 i = utf32 &amp; 0x0f;
+00045 utf8[0] = 0xe0 | i;
+00046 }
+00047 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (utf32 &lt; 0x200000) {
+00048 i = utf32 &amp; 0x3f;
+00049 utf8[3] = 0x80 | i;
+00050 utf32 &gt;&gt;= 6;
+00051
+00052 i = utf32 &amp; 0x3f;
+00053 utf8[2] = 0x80 | i;
+00054 utf32 &gt;&gt;= 6;
+00055
+00056 i = utf32 &amp; 0x3f;
+00057 utf8[1] = 0x80 | i;
+00058 utf32 &gt;&gt;= 6;
+00059
+00060 i = utf32 &amp; 0x07;
+00061 utf8[0] = 0xf0 | i;
+00062 }
+00063 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (utf32 &lt; 0x4000000) {
+00064 i = utf32 &amp; 0x3f;
+00065 utf8[4] = 0x80 | i;
+00066 utf32 &gt;&gt;= 6;
+00067
+00068 i = utf32 &amp; 0x3f;
+00069 utf8[3] = 0x80 | i;
+00070 utf32 &gt;&gt;= 6;
+00071
+00072 i = utf32 &amp; 0x3f;
+00073 utf8[2] = 0x80 | i;
+00074 utf32 &gt;&gt;= 6;
+00075
+00076 i = utf32 &amp; 0x3f;
+00077 utf8[1] = 0x80 | i;
+00078 utf32 &gt;&gt;= 6;
+00079
+00080 i = utf32 &amp; 0x03;
+00081 utf8[0] = 0xf8 | i;
+00082 }
+00083 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (utf32 &lt; 0x80000000) {
+00084 i = utf32 &amp; 0x3f;
+00085 utf8[5] = 0x80 | i;
+00086 utf32 &gt;&gt;= 6;
+00087
+00088 i = utf32 &amp; 0x3f;
+00089 utf8[4] = 0x80 | i;
+00090 utf32 &gt;&gt;= 6;
+00091
+00092 i = utf32 &amp; 0x3f;
+00093 utf8[3] = 0x80 | i;
+00094 utf32 &gt;&gt;= 6;
+00095
+00096 i = utf32 &amp; 0x3f;
+00097 utf8[2] = 0x80 | i;
+00098 utf32 &gt;&gt;= 6;
+00099
+00100 i = utf32 &amp; 0x3f;
+00101 utf8[1] = 0x80 | i;
+00102 utf32 &gt;&gt;= 6;
+00103
+00104 i = utf32 &amp; 0x01;
+00105 utf8[0] = 0xfc | i;
+00106 }
+00107 <font class="keywordflow">return</font> utf8;
+00108 }
+00109
+00114 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> UTF8to32 (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> * utf8) {
+00115
+00116 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> i = utf8[0];
+00117 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> count;
+00118 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> utf32 = 0;
+00119
+00120 <font class="keywordflow">for</font> (count = 0; i &amp; 0x80; count++) i &lt;&lt;= 1;
+00121 <font class="keywordflow">if</font> (!count) {
+00122 <font class="keywordflow">return</font> utf8[0];
+00123 }
+00124 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (count == 1) {
+00125 <font class="keywordflow">return</font> 0xffff;
+00126 }
+00127 <font class="keywordflow">else</font> {
+00128 count--;
+00129 utf32 = i &gt;&gt; count;
+00130 <font class="keywordflow">for</font> (i = 1; i &lt;= count; i++) {
+00131 <font class="keywordflow">if</font> (0xc0 &amp; utf8[i] != 0x80) {
+00132 <font class="keywordflow">return</font> 0xffff;
+00133 }
+00134 utf32 &lt;&lt;= 6;
+00135 utf32 |= (utf8[i] &amp; 0x3f);
+00136 }
+00137 }
+00138 <font class="keywordflow">return</font> utf32;
+00139 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swunicod_8h-source.html b/doc/api-documentation/html/swunicod_8h-source.html
new file mode 100644
index 0000000..ebc5c9e
--- /dev/null
+++ b/doc/api-documentation/html/swunicod_8h-source.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swunicod.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swunicod.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018
+00019
+00020 <font class="preprocessor">#ifndef SWUNICOD_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define SWUNICOD_H</font>
+00022 <font class="preprocessor"></font>
+00028 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>* UTF32to8 (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> utf32, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> * utf8);
+00029
+00030
+00036 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> UTF8to32 (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> * utf8, <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> utf32);
+00037
+00038 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swversion_8cpp-source.html b/doc/api-documentation/html/swversion_8cpp-source.html
new file mode 100644
index 0000000..4ea0794
--- /dev/null
+++ b/doc/api-documentation/html/swversion_8cpp-source.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swversion.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swversion.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;swversion.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00003 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00004 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00005
+00006
+00007 SWVersion SWVersion::currentVersion(SWORDVER);
+00008
+00009 <font class="comment">/******************************************************************************</font>
+00010 <font class="comment"> * SWVersion c-tor - Constructs a new SWVersion</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * ENT: version - const version string</font>
+00013 <font class="comment"> */</font>
+00014
+00015 SWVersion::SWVersion(<font class="keyword">const</font> <font class="keywordtype">char</font> *version) {
+00016 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font>[ strlen(version) + 1 ];
+00017 <font class="keywordtype">char</font> *tok;
+00018 major = minor = minor2 = minor3 = -1;
+00019
+00020 strcpy(buf, version);
+00021 tok = strtok(buf, <font class="stringliteral">"."</font>);
+00022 <font class="keywordflow">if</font> (tok)
+00023 major = atoi(tok);
+00024 tok = strtok(0, <font class="stringliteral">"."</font>);
+00025 <font class="keywordflow">if</font> (tok)
+00026 minor = atoi(tok);
+00027 tok = strtok(0, <font class="stringliteral">"."</font>);
+00028 <font class="keywordflow">if</font> (tok)
+00029 minor2 = atoi(tok);
+00030 tok = strtok(0, <font class="stringliteral">"."</font>);
+00031 <font class="keywordflow">if</font> (tok)
+00032 minor3 = atoi(tok);
+00033 <font class="keyword">delete</font> [] buf;
+00034 }
+00035
+00036
+00037 <font class="comment">/******************************************************************************</font>
+00038 <font class="comment"> * compare - compares this version to another version</font>
+00039 <font class="comment"> *</font>
+00040 <font class="comment"> * ENT: vi - other version with which to compare</font>
+00041 <font class="comment"> *</font>
+00042 <font class="comment"> * RET: = 0 if equal;</font>
+00043 <font class="comment"> * &lt; 0 if this version is less than other version;</font>
+00044 <font class="comment"> * &gt; 0 if this version is greater than other version</font>
+00045 <font class="comment"> */</font>
+00046
+00047 <font class="keywordtype">int</font> SWVersion::compare(<font class="keyword">const</font> SWVersion &amp;vi)<font class="keyword"> const </font>{
+00048 <font class="keywordflow">if</font> (major == vi.major)
+00049 <font class="keywordflow">if</font> (minor == vi.minor)
+00050 <font class="keywordflow">if</font> (minor2 == vi.minor2)
+00051 <font class="keywordflow">if</font> (minor3 == vi.minor3)
+00052 <font class="keywordflow">return</font> 0;
+00053 <font class="keywordflow">else</font> <font class="keywordflow">return</font> minor3 - vi.minor3;
+00054 <font class="keywordflow">else</font> <font class="keywordflow">return</font> minor2 - vi.minor2;
+00055 <font class="keywordflow">else</font> <font class="keywordflow">return</font> minor - vi.minor;
+00056 <font class="keywordflow">else</font> <font class="keywordflow">return</font> major - vi.major;
+00057 }
+00058
+00059
+00060 SWVersion::operator const char *()<font class="keyword"> const </font>{
+00061
+00062 <font class="comment">// 255 is safe because there is no way 4 integers (plus 3 '.'s) can have</font>
+00063 <font class="comment">// a string representation that will overrun this buffer</font>
+00064 <font class="keyword">static</font> <font class="keywordtype">char</font> buf[255];
+00065
+00066 <font class="keywordflow">if</font> (minor &gt; -1) {
+00067 <font class="keywordflow">if</font> (minor2 &gt; -1) {
+00068 <font class="keywordflow">if</font> (minor3 &gt; -1) {
+00069 sprintf(buf, <font class="stringliteral">"%d.%d.%d.%d"</font>, major, minor, minor2, minor3);
+00070 }
+00071 <font class="keywordflow">else</font> sprintf(buf, <font class="stringliteral">"%d.%d.%d"</font>, major, minor, minor2);
+00072 }
+00073 <font class="keywordflow">else</font> sprintf(buf, <font class="stringliteral">"%d.%d"</font>, major, minor);
+00074 }
+00075 <font class="keywordflow">else</font> sprintf(buf, <font class="stringliteral">"%d"</font>, major);
+00076
+00077 <font class="keywordflow">return</font> buf;
+00078 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swversion_8h-source.html b/doc/api-documentation/html/swversion_8h-source.html
new file mode 100644
index 0000000..ec751f7
--- /dev/null
+++ b/doc/api-documentation/html/swversion_8h-source.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swversion.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swversion.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swversion.h - definition of class SWVersion used to compare version info</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: swversion_8h-source.html,v 1.5 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef SWORDVER</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define SWORDVER "1.5.3"</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#ifndef SWVERSION_H</font>
+00027 <font class="preprocessor"></font><font class="preprocessor">#define SWVERSION_H</font>
+00028 <font class="preprocessor"></font>
+00029 <font class="keyword">class </font>SWVersion {
+00030 <font class="keyword">public</font>:
+00031 <font class="keywordtype">int</font> major, minor, minor2, minor3;
+00032
+00033 SWVersion(<font class="keyword">const</font> <font class="keywordtype">char</font> *version = <font class="stringliteral">"0.0"</font>);
+00034 <font class="keywordtype">int</font> compare(<font class="keyword">const</font> SWVersion &amp;vi) <font class="keyword">const</font>;
+00035 operator const char *() <font class="keyword">const</font>;
+00036 <font class="keywordtype">bool</font> operator&gt;(<font class="keyword">const</font> SWVersion &amp;vi)<font class="keyword"> const </font>{<font class="keywordflow">return</font> (compare(vi) &gt; 0);}
+00037 <font class="keywordtype">bool</font> operator&lt;(<font class="keyword">const</font> SWVersion &amp;vi)<font class="keyword"> const </font>{<font class="keywordflow">return</font> (compare(vi) &lt; 0);}
+00038 <font class="keywordtype">bool</font> operator==(<font class="keyword">const</font> SWVersion &amp;vi)<font class="keyword"> const </font>{<font class="keywordflow">return</font> (compare(vi) == 0);}
+00039
+00040 <font class="comment">// current sword library version</font>
+00041 <font class="keyword">static</font> SWVersion currentVersion;
+00042 };
+00043
+00044 <font class="preprocessor">#endif</font>
+00045 <font class="preprocessor"></font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/swwinlog_8h-source.html b/doc/api-documentation/html/swwinlog_8h-source.html
new file mode 100644
index 0000000..678d80f
--- /dev/null
+++ b/doc/api-documentation/html/swwinlog_8h-source.html
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>swwinlog.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>swwinlog.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swwinlog.h - definition of SWWinLog-- a derivitive of SWLog used to</font>
+00003 <font class="comment"> * handle logging in the MSWindows environment</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: swwinlog_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="comment">//---------------------------------------------------------------------------</font>
+00024 <font class="preprocessor">#ifndef swwinlogH</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define swwinlogH</font>
+00026 <font class="preprocessor"></font><font class="comment">//---------------------------------------------------------------------------</font>
+00027
+00028 <font class="preprocessor">#include &lt;swlog.h&gt;</font>
+00029
+00030 <font class="keyword">class </font>SWWinLog:<font class="keyword">public</font> SWLog
+00031 {
+00032 HWND parent;
+00033 <font class="keyword">public</font>:
+00034 SWWinLog (HWND iparent);
+00035 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogWarning (<font class="keywordtype">char</font> *fmt, ...);
+00036 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogError (<font class="keywordtype">char</font> *fmt, ...);
+00037 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogTimedInformation (<font class="keywordtype">char</font> *fmt, ...);
+00038 <font class="keyword">virtual</font> <font class="keywordtype">void</font> LogInformation (<font class="keywordtype">char</font> *fmt, ...);
+00039 };
+00040
+00041
+00042 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/sysdata_8h-source.html b/doc/api-documentation/html/sysdata_8h-source.html
new file mode 100644
index 0000000..62f4c93
--- /dev/null
+++ b/doc/api-documentation/html/sysdata_8h-source.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>sysdata.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>sysdata.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef SIZEDTYPES_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define SIZEDTYPES_H</font>
+00003 <font class="preprocessor"></font><font class="comment">/*</font>
+00004 <font class="comment"> * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the</font>
+00005 <font class="comment"> * header files exported to user space</font>
+00006 <font class="comment"> */</font>
+00007 <font class="preprocessor">#ifdef USE_AUTOTOOLS</font>
+00008 <font class="preprocessor"></font><font class="preprocessor">#include "config.h"</font>
+00009 <font class="preprocessor">#endif</font>
+00010 <font class="preprocessor"></font>
+00011 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> __s8;
+00012 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> __u8;
+00013
+00014 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">short</font> __s16;
+00015 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> __u16;
+00016
+00017 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> __s32;
+00018 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> __u32;
+00019
+00020 <font class="preprocessor">#if defined(__GNUC__) &amp;&amp; !defined(__STRICT_ANSI__)</font>
+00021 <font class="preprocessor"></font><font class="comment">//typedef __signed__ long long __s64;</font>
+00022 <font class="comment">//typedef unsigned long long __u64;</font>
+00023 <font class="preprocessor">#endif</font>
+00024 <font class="preprocessor"></font>
+00025
+00026 <font class="preprocessor">#define __swap16(x) \</font>
+00027 <font class="preprocessor"> ((__u16)( \</font>
+00028 <font class="preprocessor"> (((__u16)(x) &amp; (__u16)0x00ffU) &lt;&lt; 8) | \</font>
+00029 <font class="preprocessor"> (((__u16)(x) &amp; (__u16)0xff00U) &gt;&gt; 8) ))</font>
+00030 <font class="preprocessor"></font>
+00031
+00032 <font class="preprocessor">#define __swap32(x) \</font>
+00033 <font class="preprocessor"> ((__u32)( \</font>
+00034 <font class="preprocessor"> (((__u32)(x) &amp; (__u32)0x000000ffUL) &lt;&lt; 24) | \</font>
+00035 <font class="preprocessor"> (((__u32)(x) &amp; (__u32)0x0000ff00UL) &lt;&lt; 8) | \</font>
+00036 <font class="preprocessor"> (((__u32)(x) &amp; (__u32)0x00ff0000UL) &gt;&gt; 8) | \</font>
+00037 <font class="preprocessor"> (((__u32)(x) &amp; (__u32)0xff000000UL) &gt;&gt; 24) ))</font>
+00038 <font class="preprocessor"></font>
+00039
+00040 <font class="preprocessor">#define __swap64(x) \</font>
+00041 <font class="preprocessor"> ((__u64)( \</font>
+00042 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0x00000000000000ffULL) &lt;&lt; 56) | \</font>
+00043 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0x000000000000ff00ULL) &lt;&lt; 40) | \</font>
+00044 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0x0000000000ff0000ULL) &lt;&lt; 24) | \</font>
+00045 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0x00000000ff000000ULL) &lt;&lt; 8) | \</font>
+00046 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0x000000ff00000000ULL) &gt;&gt; 8) | \</font>
+00047 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0x0000ff0000000000ULL) &gt;&gt; 24) | \</font>
+00048 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0x00ff000000000000ULL) &gt;&gt; 40) | \</font>
+00049 <font class="preprocessor"> (__u64)(((__u64)(x) &amp; (__u64)0xff00000000000000ULL) &gt;&gt; 56) ))</font>
+00050 <font class="preprocessor"></font>
+00051
+00052
+00053
+00054 <font class="preprocessor">#ifndef WORDS_BIGENDIAN</font>
+00055 <font class="preprocessor"></font>
+00056 <font class="preprocessor">#define swordtoarch16(x) (x)</font>
+00057 <font class="preprocessor"></font><font class="preprocessor">#define swordtoarch32(x) (x)</font>
+00058 <font class="preprocessor"></font><font class="preprocessor">#define swordtoarch64(x) (x)</font>
+00059 <font class="preprocessor"></font><font class="preprocessor">#define archtosword16(x) (x)</font>
+00060 <font class="preprocessor"></font><font class="preprocessor">#define archtosword32(x) (x)</font>
+00061 <font class="preprocessor"></font><font class="preprocessor">#define archtosword64(x) (x)</font>
+00062 <font class="preprocessor"></font>
+00063 <font class="preprocessor">#else </font>
+00064 <font class="preprocessor"></font>
+00065 <font class="preprocessor">#define swordtoarch16(x) __swap16(x)</font>
+00066 <font class="preprocessor"></font><font class="preprocessor">#define swordtoarch32(x) __swap32(x)</font>
+00067 <font class="preprocessor"></font><font class="preprocessor">#define swordtoarch64(x) __swap64(x)</font>
+00068 <font class="preprocessor"></font><font class="preprocessor">#define archtosword16(x) __swap16(x)</font>
+00069 <font class="preprocessor"></font><font class="preprocessor">#define archtosword32(x) __swap32(x)</font>
+00070 <font class="preprocessor"></font><font class="preprocessor">#define archtosword64(x) __swap64(x)</font>
+00071 <font class="preprocessor"></font>
+00072
+00073 <font class="preprocessor">#endif</font>
+00074 <font class="preprocessor"></font>
+00075
+00076 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/tbdisp_8h-source.html b/doc/api-documentation/html/tbdisp_8h-source.html
new file mode 100644
index 0000000..703e11e
--- /dev/null
+++ b/doc/api-documentation/html/tbdisp_8h-source.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>tbdisp.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>tbdisp.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * tbdisp.cpp - code for class 'tbdisp'. tbdisp writes module output to a</font>
+00003 <font class="comment"> * MSWindows TextBox (or any other control that takes a</font>
+00004 <font class="comment"> * SetDialogItemText</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * $Id: tbdisp_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00009 <font class="comment"> * CrossWire Bible Society</font>
+00010 <font class="comment"> * P. O. Box 2528</font>
+00011 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00014 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00015 <font class="comment"> * Free Software Foundation version 2.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00018 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00019 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00020 <font class="comment"> * General Public License for more details.</font>
+00021 <font class="comment"> *</font>
+00022 <font class="comment"> */</font>
+00023
+00024 <font class="preprocessor">#ifndef TBDISP_H</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define TBDISP_H</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#include &lt;windows.h&gt;</font>
+00028 <font class="keyword">class </font><a class="code" href="class_s_w_module.html">SWModule</a>;
+00029
+00030 <font class="keyword">class </font>TBDisp:<font class="keyword">public</font> <a class="code" href="class_s_w_display.html">SWDisplay</a>
+00031 {
+00032 <font class="keyword">protected</font>:
+00033 HWND wnd;
+00034 <font class="keywordtype">int</font> ctrlid;
+00035 <font class="keyword">public</font>:
+00036 TBDisp (HWND iwnd, <font class="keywordtype">int</font> ictrlid);
+00037 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Display (<a class="code" href="class_s_w_module.html">SWModule</a> &amp; imodule);
+00038 };
+00039 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/texts_2rawtext_2rtfidx_8cpp-source.html b/doc/api-documentation/html/texts_2rawtext_2rtfidx_8cpp-source.html
new file mode 100644
index 0000000..c41c858
--- /dev/null
+++ b/doc/api-documentation/html/texts_2rawtext_2rtfidx_8cpp-source.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rtfidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rtfidx.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00003 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00004
+00005
+00006 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size);
+00007
+00008
+00009 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00010 {
+00011 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00012 <font class="keywordtype">long</font> pos;
+00013 <font class="keywordtype">short</font> size, tmp;
+00014 <font class="keywordtype">int</font> num1, num2, offset, curbook = 0, curchap = 0, curverse = 0;
+00015 <font class="keywordtype">char</font> buf[127];
+00016 <a class="code" href="class_verse_key.html">VerseKey</a> mykey;
+00017
+00018 <font class="keywordflow">if</font> ((argc &lt; 2) || (argc &gt; 3)) {
+00019 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt]\n"</font>, argv[0]);
+00020 exit(1);
+00021 }
+00022
+00023 <font class="keywordflow">if</font> ((fp = open(argv[1], O_RDONLY)) == -1) {
+00024 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, argv[1]);
+00025 exit(1);
+00026 }
+00027
+00028 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, argv[1]);
+00029 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00030 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00031 exit(1);
+00032 }
+00033
+00034 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, argv[1]);
+00035 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00036 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00037 exit(1);
+00038 }
+00039
+00040 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, argv[1]);
+00041 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00042 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00043 exit(1);
+00044 }
+00045
+00046 pos = 0;
+00047 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00048 pos = 4;
+00049 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00050
+00051
+00052 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00053 pos = 0;
+00054 size = 0;
+00055 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00056 write(vfp, &amp;size, 2);
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059
+00060 mykey = (argc == 3) ? <font class="stringliteral">"Matthew 1:1"</font> : <font class="stringliteral">"Genesis 1:1"</font>;
+00061
+00062 <font class="keywordflow">while</font> (!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;size)) {
+00063 num1 = mykey.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00064 num2 = mykey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00065 <font class="keywordflow">if</font> (num2 == 1) { <font class="comment">/* if we're at a new chapter */</font>
+00066 <font class="keywordflow">if</font> (num1 == 1) { <font class="comment">/* if we're at a new book */</font>
+00067 pos = lseek(cfp, 0, SEEK_CUR);
+00068 write(bfp, &amp;pos, 4);
+00069 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00070 write(cfp, &amp;pos, 4);
+00071 pos = 0;
+00072 tmp = 0;
+00073 write(vfp, &amp;pos, 4); <font class="comment">/* Book intro (vss) */</font>
+00074 write(vfp, &amp;tmp, 2);
+00075 curbook++;
+00076 curchap = 0;
+00077 }
+00078 pos = lseek(vfp, 0, SEEK_CUR);
+00079 write(cfp, &amp;pos, 4);
+00080 curverse = 1;
+00081 pos = 0;
+00082 tmp = 0;
+00083 write(vfp, &amp;pos, 4); <font class="comment">/* Chapter intro */</font>
+00084 write(vfp, &amp;tmp, 2);
+00085 curchap++;
+00086 }
+00087 <font class="keywordflow">else</font> curverse++;
+00088
+00089 printf(<font class="stringliteral">"%2d:%3d:%3d found at offset: %7d\n"</font>, curbook, num1, num2, offset);
+00090
+00091 <font class="keywordflow">if</font> (num1 != curchap) {
+00092 fprintf(stderr, <font class="stringliteral">"Error: Found chaptures out of sequence\n"</font>);
+00093 <font class="keywordflow">break</font>;
+00094 }
+00095 <font class="keywordflow">if</font> (num2 != curverse) {
+00096 fprintf(stderr, <font class="stringliteral">"Error: Found verses out of sequence\n"</font>);
+00097 <font class="keywordflow">break</font>;
+00098 }
+00099 write(vfp, &amp;offset, 4);
+00100 write(vfp, &amp;size, 2);
+00101 mykey++;
+00102 }
+00103
+00104 close(vfp);
+00105 close(cfp);
+00106 close(bfp);
+00107 close(fp);
+00108 }
+00109
+00110
+00111 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size)
+00112 {
+00113 <font class="keywordtype">char</font> buf[17];
+00114 <font class="keywordtype">char</font> buf2[7];
+00115 <font class="keywordtype">char</font> loop;
+00116 <font class="keywordtype">char</font> offadj, inquotes, sizeadj;
+00117 <font class="keywordtype">int</font> offset2, ch2, vs2;
+00118
+00119 memset(buf, <font class="charliteral">' '</font>, 17);
+00120
+00121 <font class="keywordflow">while</font> (1) {
+00122 offadj = -10;
+00123 inquotes = 0;
+00124 sizeadj = 0;
+00125 <font class="keywordflow">if</font> (!memcmp(&amp;buf[1], <font class="stringliteral">"\\f0\\fs16\\cf2\\up6"</font>, 15)) {
+00126 offadj = 0;
+00127 inquotes = 1;
+00128 sizeadj = (*buf == 10) ? -19:-17;
+00129 }
+00130 <font class="keywordflow">if</font> (!memcmp(buf, <font class="stringliteral">"\\fi200\\widctlpar"</font>, 16)) {
+00131 offadj = -1;
+00132 <font class="comment">// inquotes = 1;</font>
+00133 sizeadj = -18;
+00134 }
+00135 <font class="keywordflow">if</font> (offadj &gt; -10) {
+00136 *offset = lseek(fp, 0, SEEK_CUR) + offadj;
+00137 <font class="keywordflow">if</font> (size) {
+00138 (*offset)++;
+00139 <font class="keywordflow">while</font> (inquotes) {
+00140 <font class="keywordflow">while</font> (read(fp, buf2, 1) == 1) {
+00141 <font class="keywordflow">if</font> (*buf2 == <font class="charliteral">'}'</font>)
+00142 <font class="keywordflow">break</font>;
+00143 (*offset)++;
+00144 }
+00145 inquotes--;
+00146 }
+00147 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, 0)) {
+00148 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00149 }
+00150 <font class="keywordflow">else</font> {
+00151 sprintf(buf2, <font class="stringliteral">"%d:%d"</font>, ch2, vs2);
+00152 *size = (offset2 - (*offset));
+00153 }
+00154 lseek(fp, *offset+17, SEEK_SET);
+00155 }
+00156 <font class="keywordflow">else</font> (*offset) += sizeadj;
+00157 <font class="keywordflow">return</font> 0;
+00158 }
+00159 memmove(buf, &amp;buf[1], 16);
+00160 <font class="keywordflow">if</font> (read(fp, &amp;buf[16], 1) != 1)
+00161 <font class="keywordflow">return</font> 1;
+00162 }
+00163 }
+00164
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/texts_2ztext_2rawtxt2z_8cpp-source.html b/doc/api-documentation/html/texts_2ztext_2rawtxt2z_8cpp-source.html
new file mode 100644
index 0000000..824b8e4
--- /dev/null
+++ b/doc/api-documentation/html/texts_2ztext_2rawtxt2z_8cpp-source.html
@@ -0,0 +1,471 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>rawtxt2z.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>rawtxt2z.cpp</h1><div class="fragment"><pre>00001 <font class="comment">// Compression on variable granularity</font>
+00002
+00003 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00004 <font class="preprocessor">#include &lt;iostream&gt;</font>
+00005 <font class="preprocessor">#include &lt;fstream&gt;</font>
+00006 <font class="preprocessor">#include &lt;string&gt;</font>
+00007
+00008 <font class="preprocessor">#ifndef __GNUC__</font>
+00009 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00010 <font class="preprocessor">#else</font>
+00011 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00012 <font class="preprocessor">#endif</font>
+00013 <font class="preprocessor"></font>
+00014 <font class="preprocessor">#include &lt;zlib.h&gt;</font>
+00015 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00016
+00017 <font class="keywordtype">int</font> iBufSize, ulBuffNum;
+00018 ofstream cfile;
+00019 ofstream cfile2;
+00020
+00021 <font class="keywordtype">int</font> ofd[2], oxfd[2], ovxfd[2];
+00022 <font class="keywordtype">int</font> ifd[2], ixfd[2];
+00023 <font class="keywordtype">int</font> itestfd[2], itestxfd[2];
+00024 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulIOff=0, ulCOff=0, ulFOff=0, ulNone=0;
+00025 string currbuff=<font class="stringliteral">""</font>;
+00026
+00027
+00028 <font class="keywordtype">int</font> openreadfile(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">char</font> *path, <font class="keyword">const</font> <font class="keywordtype">char</font> *filename)
+00029 {
+00030 <font class="keywordtype">int</font> filenum;
+00031 sprintf(buffer, <font class="stringliteral">"%s/%s"</font>, path, filename);
+00032 cfile &lt;&lt; buffer &lt;&lt; <font class="stringliteral">"\n"</font>;
+00033 filenum = open(buffer, O_RDONLY|O_BINARY);
+00034 <font class="keywordflow">if</font> (filenum &gt; 0)
+00035 {
+00036 <font class="keywordflow">return</font> filenum;
+00037 }
+00038 <font class="keywordflow">else</font>
+00039 {
+00040 cerr &lt;&lt; <font class="stringliteral">"failed to open file to read\n"</font>;
+00041 exit(-1);
+00042 }
+00043 }
+00044
+00045 <font class="keywordtype">int</font> openwritefile(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">char</font> *path, <font class="keyword">const</font> <font class="keywordtype">char</font> *filename)
+00046 {
+00047 <font class="keywordtype">int</font> filenum;
+00048 sprintf(buffer, <font class="stringliteral">"%s/%s"</font>, path, filename);
+00049 cfile &lt;&lt; buffer &lt;&lt; <font class="stringliteral">"\n"</font>;
+00050 filenum = open(buffer, O_WRONLY|O_BINARY|O_CREAT|O_TRUNC);
+00051 <font class="keywordflow">if</font> (filenum &gt; 0)
+00052 {
+00053 <font class="keywordflow">return</font> filenum;
+00054 }
+00055 <font class="keywordflow">else</font>
+00056 {
+00057 cerr &lt;&lt; <font class="stringliteral">"failed to open file to read\n"</font>;
+00058 exit(-1);
+00059 }
+00060 }
+00061
+00062 <font class="keywordtype">int</font> bytebound(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;thekey)
+00063 {
+00064 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> bufferoff;
+00065 cfile &lt;&lt; <font class="stringliteral">"byteboundtest "</font> &lt;&lt; thekey &lt;&lt; <font class="stringliteral">"\n"</font>;
+00066 bufferoff = iBufSize * (ulBuffNum+1);
+00067 <font class="keywordflow">if</font> (offset &gt; bufferoff)
+00068 {
+00069 <font class="keywordflow">return</font> 1;
+00070 }
+00071 <font class="keywordflow">else</font>
+00072 {
+00073 <font class="keywordflow">return</font> 0;
+00074 }
+00075 }
+00076
+00077 <font class="keywordtype">int</font> versebound(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;thekey)
+00078 {
+00079 cfile &lt;&lt; <font class="stringliteral">"verseboundtest "</font> &lt;&lt; thekey &lt;&lt; <font class="stringliteral">"\n"</font>;
+00080 <font class="keywordflow">return</font> 1;
+00081 }
+00082
+00083 <font class="keywordtype">int</font> chapterbound(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;thekey)
+00084 {
+00085 <a class="code" href="class_verse_key.html">VerseKey</a> testkey;
+00086 testkey = thekey;
+00087 testkey++;
+00088 <font class="comment">//cfile &lt;&lt; "chapterboundtest " &lt;&lt; testkey;</font>
+00089 <font class="keywordflow">if</font> (testkey.<a class="code" href="class_verse_key.html#a25">Verse</a>()==1 || (!thekey.<a class="code" href="class_verse_key.html#a38">compare</a>(<font class="stringliteral">"Revelation of John 22:21"</font>)))
+00090 {
+00091 <font class="comment">//cfile &lt;&lt; " 1\n";</font>
+00092 <font class="keywordflow">return</font> 1;
+00093 }
+00094 <font class="keywordflow">else</font>
+00095 {
+00096 <font class="comment">//cfile &lt;&lt; " 0\n";</font>
+00097 <font class="keywordflow">return</font> 0;
+00098 }
+00099 }
+00100
+00101 <font class="keywordtype">int</font> bookbound(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;thekey)
+00102 {
+00103 <a class="code" href="class_verse_key.html">VerseKey</a> testkey;
+00104 testkey = thekey;
+00105 cfile &lt;&lt; <font class="stringliteral">"bookboundtest "</font> &lt;&lt; testkey &lt;&lt; <font class="stringliteral">"\n"</font>;
+00106 testkey++;
+00107 <font class="keywordflow">if</font> (testkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>()==1 || (!thekey.<a class="code" href="class_verse_key.html#a38">compare</a>(<font class="stringliteral">"Revelation of John 22:21"</font>)))
+00108 {
+00109 <font class="keywordflow">return</font> 1;
+00110 }
+00111 <font class="keywordflow">else</font>
+00112 {
+00113 <font class="keywordflow">return</font> 0;
+00114 }
+00115 }
+00116
+00117
+00118 <font class="keyword">typedef</font> int (*boundfunc)(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;thekey);
+00119
+00120 <font class="keywordtype">int</font> writeblock(<font class="keywordtype">int</font> i)
+00121 {
+00122 <font class="keywordtype">char</font> *destbuff=NULL;
+00123 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> compsize = 0, buffsize=0;
+00124
+00125 cfile &lt;&lt; <font class="stringliteral">"compressing block\n"</font>;
+00126 <font class="comment">// compress current buffer</font>
+00127 buffsize = currbuff.length();
+00128 write(itestfd[i], currbuff.c_str(), buffsize);
+00129 compsize = (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>) (buffsize*1.01)+20; <font class="comment">// at least 1% bigger than buffer + 12 bytes</font>
+00130 <font class="comment">//cfile &lt;&lt; "{" &lt;&lt; compsize &lt;&lt; "}";</font>
+00131 <font class="comment">//destbuff = (char *) calloc(compsize + 1, 1);</font>
+00132 destbuff = <font class="keyword">new</font> <font class="keywordtype">char</font>[compsize];
+00133 <font class="keywordflow">if</font> (compress((Bytef*)destbuff, &amp;compsize, (<font class="keyword">const</font> Bytef*)currbuff.c_str(), buffsize)!=Z_OK)
+00134 {
+00135 cerr &lt;&lt; <font class="stringliteral">"Could not compress buffer: exiting\n"</font>;
+00136 <font class="keyword">delete</font>[] destbuff;
+00137 exit(-1);
+00138 }
+00139 <font class="comment">//cout &lt;&lt; "Compressed buffer{" &lt;&lt; compsize &lt;&lt; "}\n" &lt;&lt; destbuff &lt;&lt; "\n";</font>
+00140 <font class="comment">//cout.flush();</font>
+00141 <font class="comment">// write to compressed file index</font>
+00142 ulCOff = lseek(ofd[i], 0, SEEK_END);
+00143 write(oxfd[i], &amp;ulCOff, 4); <font class="comment">// offset in compressed file</font>
+00144 write(oxfd[i], &amp;compsize, 4); <font class="comment">// compressed size</font>
+00145 write(oxfd[i], &amp;buffsize, 4); <font class="comment">// uncompressed size</font>
+00146 cfile &lt;&lt; buffsize &lt;&lt; <font class="stringliteral">" -&gt; "</font> &lt;&lt; compsize &lt;&lt; <font class="stringliteral">"\n"</font>;
+00147 cfile2 &lt;&lt; <font class="stringliteral">"Compressed{"</font> &lt;&lt; compsize &lt;&lt; <font class="stringliteral">"}\n"</font> &lt;&lt; destbuff &lt;&lt; <font class="stringliteral">"\n"</font>;
+00148 cfile2.flush();
+00149
+00150 <font class="comment">//write compressed buffer to file</font>
+00151 write(ofd[i], destbuff, compsize);
+00152
+00153 <font class="comment">//free(destbuff);</font>
+00154 <font class="keyword">delete</font>[] destbuff;
+00155
+00156 currbuff = <font class="stringliteral">""</font>;
+00157 ulBuffNum++;
+00158 ulIOff = 0;
+00159 <font class="keywordflow">return</font> 1;
+00160 }
+00161
+00162
+00163
+00164 <font class="keywordtype">int</font> main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00165 {
+00166 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00167 <font class="keywordtype">int</font> i;
+00168 <font class="keywordtype">char</font> xbuff[64];
+00169 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset;
+00170 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size=0;
+00171 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulsize=0;
+00172 <font class="keywordtype">char</font> *tmpbuf=NULL;
+00173 <font class="keywordtype">int</font> iType;
+00174 boundfunc blockbound[4] = {bytebound, versebound, chapterbound, bookbound};
+00175 <font class="keywordtype">bool</font> newbook=<font class="keyword">true</font>, newchapter=<font class="keyword">true</font>, newtestament = <font class="keyword">true</font>, newmodule = <font class="keyword">true</font>, lasttodo=<font class="keyword">true</font>;
+00176
+00177 <font class="keywordflow">if</font> ((argc &lt; 2) || (argc &gt; 4)) {
+00178 cerr &lt;&lt; <font class="stringliteral">"usage: "</font> &lt;&lt; argv[0] &lt;&lt; <font class="stringliteral">" datapath [compression type [buffer size]]\n"</font>;
+00179 exit(1);
+00180 }
+00181
+00182 <font class="keywordflow">if</font> (argc&gt;2)
+00183 {
+00184 iType = atoi(argv[2]);
+00185 <font class="keywordflow">if</font> (argc==4)
+00186 {
+00187 iBufSize = atoi(argv[3]);
+00188 }
+00189 <font class="keywordflow">else</font>
+00190 {
+00191 iBufSize = 1;
+00192 }
+00193 }
+00194 <font class="keywordflow">else</font>
+00195 {
+00196 iType = 2;
+00197 iBufSize = 1;
+00198 }
+00199
+00200 cfile.open(<font class="stringliteral">"raw2z.log"</font>, ios::out);
+00201 <font class="keywordflow">if</font> (!cfile.is_open())
+00202 {
+00203 cerr &lt;&lt; <font class="stringliteral">"Failed to open log file\n"</font>;
+00204 exit(-1);
+00205 }
+00206 cfile2.open(<font class="stringliteral">"raw2z.lg2"</font>, ios::out);
+00207 <font class="keywordflow">if</font> (!cfile2.is_open())
+00208 {
+00209 cerr &lt;&lt; <font class="stringliteral">"Failed to open log file\n"</font>;
+00210 exit(-1);
+00211 }
+00212 cfile &lt;&lt; iType &lt;&lt; <font class="stringliteral">" "</font> &lt;&lt; iBufSize &lt;&lt; <font class="stringliteral">"\n"</font>;
+00213
+00214 <font class="keywordflow">if</font> ((iType&lt;=0) || (iType &gt; 4) || !iBufSize || !strcmp(argv[1], <font class="stringliteral">"-h"</font>) || !strcmp(argv[1], <font class="stringliteral">"--help"</font>) || !strcmp(argv[1], <font class="stringliteral">"/?"</font>) || !strcmp(argv[1], <font class="stringliteral">"-help"</font>))
+00215 {
+00216 cfile &lt;&lt; argv[0] &lt;&lt; <font class="stringliteral">" - a tool to create compressed Sword modules\n"</font>;
+00217 cfile &lt;&lt; <font class="stringliteral">"version 0.1\n\n"</font>;
+00218 cfile &lt;&lt; <font class="stringliteral">"usage: "</font>&lt;&lt; argv[0] &lt;&lt; <font class="stringliteral">" datapath [compression type [buffer size]]\n\n"</font>;
+00219 cfile &lt;&lt; <font class="stringliteral">"datapath: the directory in which to find the raw module\n"</font>;
+00220 cfile &lt;&lt; <font class="stringliteral">"compression type: (default 2)\n"</font> &lt;&lt; <font class="stringliteral">" 1 - bytes\n"</font> &lt;&lt; <font class="stringliteral">" 2 - verses\n"</font> &lt;&lt; <font class="stringliteral">" 3 - chapters\n"</font> &lt;&lt; <font class="stringliteral">" 4 - books\n"</font>;
+00221 cfile &lt;&lt; <font class="stringliteral">"buffer size (default 1): the number of the compression type in each block\n"</font>;
+00222 exit(1);
+00223 }
+00224
+00225 <font class="comment">//zobj = new SWCompress();</font>
+00226 <font class="comment">//rawdrv = new RawVerse(argv[1]);</font>
+00227
+00228 <font class="preprocessor">#ifndef O_BINARY</font>
+00229 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0</font>
+00230 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00231 <font class="preprocessor"></font> cfile &lt;&lt; <font class="stringliteral">"opening files\n"</font>;
+00232
+00233 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(argv[1]) + 11 ];
+00234
+00235 <font class="comment">//original files</font>
+00236 ifd[0] = openreadfile(tmpbuf, argv[1], <font class="stringliteral">"ot"</font>);
+00237 ixfd[0] = openreadfile(tmpbuf, argv[1], <font class="stringliteral">"ot.vss"</font>);
+00238 ifd[1] = openreadfile(tmpbuf, argv[1], <font class="stringliteral">"nt"</font>);
+00239 ixfd[1] = openreadfile(tmpbuf, argv[1], <font class="stringliteral">"nt.vss"</font>);
+00240
+00241 <font class="keywordflow">switch</font> ( iType) {
+00242 <font class="keywordflow">case</font> 1 :
+00243 ofd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.rzz"</font>);
+00244 oxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.rzs"</font>);
+00245 ovxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.rzv"</font>);
+00246 ofd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.rzz"</font>);
+00247 oxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.rzs"</font>);
+00248 ovxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.rzv"</font>);
+00249 <font class="comment">//boundfunc = bytebound;</font>
+00250 <font class="keywordflow">break</font>;
+00251 <font class="keywordflow">case</font> 2 :
+00252 ofd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.vzz"</font>);
+00253 oxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.vzs"</font>);
+00254 ovxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.vzv"</font>);
+00255 ofd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.vzz"</font>);
+00256 oxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.vzs"</font>);
+00257 ovxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.vzv"</font>);
+00258 <font class="keywordflow">break</font>;
+00259 <font class="keywordflow">case</font> 3 :
+00260 ofd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.czz"</font>);
+00261 oxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.czs"</font>);
+00262 ovxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.czv"</font>);
+00263 ofd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.czz"</font>);
+00264 oxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.czs"</font>);
+00265 ovxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.czv"</font>);
+00266 <font class="keywordflow">break</font>;
+00267 <font class="keywordflow">case</font> 4 :
+00268 ofd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.bzz"</font>);
+00269 oxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.bzs"</font>);
+00270 ovxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.bzv"</font>);
+00271 ofd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.bzz"</font>);
+00272 oxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.bzs"</font>);
+00273 ovxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.bzv"</font>);
+00274 <font class="keywordflow">break</font>;
+00275 <font class="keywordflow">default</font>:
+00276 cerr &lt;&lt; <font class="stringliteral">"Unknown compression type\n"</font>;
+00277 exit(-1);
+00278 }
+00279 itestfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.tst"</font>);
+00280 itestfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.tst"</font>);
+00281 itestxfd[0] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"ot.tdx"</font>);
+00282 itestxfd[1] = openwritefile(tmpbuf, argv[1], <font class="stringliteral">"nt.tdx"</font>);
+00283
+00284
+00285 <font class="keyword">delete</font> [] tmpbuf;
+00286
+00287 <font class="comment">//cfile &lt;&lt; "about to start\n";</font>
+00288
+00289 <font class="keywordflow">for</font> ( i=0; i&lt;2; i++)
+00290 {
+00291 ulIOff=0, ulBuffNum=0;
+00292 currbuff = <font class="stringliteral">""</font>;
+00293 key1 = (i == 1) ? <font class="stringliteral">"Matthew 1:1"</font> : <font class="stringliteral">"Genesis 1:1"</font>;
+00294 key2 = key3 = key1;
+00295 newtestament = <font class="keyword">true</font>;
+00296
+00297 cfile &lt;&lt; <font class="stringliteral">"key: "</font> &lt;&lt; key1 &lt;&lt; <font class="stringliteral">" Testament {"</font> &lt;&lt; key1.<a class="code" href="class_verse_key.html#a22">Testament</a>()-1 &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00298 <font class="comment">//cfile &lt;&lt; "Chapter {" &lt;&lt; key.Chapter() &lt;&lt; "}\n";</font>
+00299 <font class="comment">//cfile &lt;&lt; "Verse {" &lt;&lt; key.Verse() &lt;&lt; "}\n";</font>
+00300 <font class="comment">//cfile &lt;&lt; key.compare("Revelation of John 22:21") &lt;&lt; "\n";</font>
+00301 <font class="comment">//cfile &lt;&lt; key.compare("Genesis 1:1") &lt;&lt; "\n";</font>
+00302 <font class="keywordflow">do</font>
+00303 {
+00304 <font class="comment">//cfile &lt;&lt; "ok";</font>
+00305 <font class="comment">// read current verse offset</font>
+00306 <font class="keywordflow">if</font> (read(ixfd[i], &amp;offset, 4) != 4)
+00307 {
+00308 cfile &lt;&lt; <font class="stringliteral">"Failed to read input verse offsets?\n"</font>;
+00309 <font class="keywordflow">break</font>;
+00310 }
+00311 <font class="keywordflow">if</font> (read(ixfd[i], &amp;size, 2) != 2)
+00312 {
+00313 cfile &lt;&lt; <font class="stringliteral">"Failed to read input verse sizes?\n"</font>;
+00314 <font class="keywordflow">break</font>;
+00315 }
+00316 cfile &lt;&lt; <font class="stringliteral">"key:"</font> &lt;&lt; key1 &lt;&lt; <font class="stringliteral">" offset:"</font> &lt;&lt; offset &lt;&lt; <font class="stringliteral">" size:"</font> &lt;&lt; size &lt;&lt; <font class="stringliteral">"\n"</font>;
+00317 sprintf(xbuff, <font class="stringliteral">"key{%s} offset{%ld} size{%d}\n"</font>, (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key1, offset, size);
+00318 write(itestxfd[i], &amp;xbuff, strlen(xbuff));
+00319 ulsize = size;
+00320 <font class="keywordflow">if</font> (!offset &amp;&amp; !size)
+00321 {
+00322 <font class="comment">//Check for module header</font>
+00323 <font class="keywordflow">if</font> (read(ixfd[i], &amp;ulIOff, 4) != 4)
+00324 {
+00325 cfile &lt;&lt; <font class="stringliteral">"Failed to read input verse offsets?\n"</font>;
+00326 <font class="keywordflow">break</font>;
+00327 }
+00328 ulsize = ulIOff;
+00329 ulIOff = 0;
+00330 lseek(ixfd[i], 6, SEEK_SET);
+00331 }
+00332
+00333 <font class="keywordflow">if</font> (ulsize)
+00334 {
+00335 <font class="comment">// read current verse and add to current buffer</font>
+00336 tmpbuf = (<font class="keywordtype">char</font> *) calloc(ulsize + 1, 1);
+00337 lseek(ifd[i], offset, SEEK_SET);
+00338 read(ifd[i], tmpbuf, ulsize);
+00339 currbuff += tmpbuf;
+00340 <font class="comment">//cfile &lt;&lt; currbuff &lt;&lt; "\n";</font>
+00341
+00342 <font class="comment">// write to verse index into compressed</font>
+00343 write(ovxfd[i], &amp;ulBuffNum, 4); <font class="comment">// current buffer number</font>
+00344 write(ovxfd[i], &amp;ulIOff, 4); <font class="comment">// offset within the buffer</font>
+00345 write(ovxfd[i], &amp;size, 2); <font class="comment">// verse size</font>
+00346
+00347 ulFOff = lseek(ofd[i], 0, SEEK_CUR) + size;
+00348 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a38">compare</a>(<font class="stringliteral">"Revelation of John 22:21"</font>)!=-1)
+00349 {
+00350 lasttodo = <font class="keyword">false</font>;
+00351 }
+00352 <font class="keywordflow">if</font> (blockbound[iType-1](ulFOff, key1)<font class="comment">/*at block boudary*/</font>)
+00353 {
+00354 writeblock(i);
+00355 <font class="comment">/*</font>
+00356 <font class="comment"> cfile &lt;&lt; "compressing block\n";</font>
+00357 <font class="comment"> // compress current buffer</font>
+00358 <font class="comment"> buffsize = currbuff.length();</font>
+00359 <font class="comment"> write(itestfd[i], currbuff.c_str(), buffsize);</font>
+00360 <font class="comment"> compsize = (unsigned long) (buffsize*1.01)+20; // at least 1% bigger than buffer + 12 bytes</font>
+00361 <font class="comment"> //cfile &lt;&lt; "{" &lt;&lt; compsize &lt;&lt; "}";</font>
+00362 <font class="comment"> //destbuff = (char *) calloc(compsize + 1, 1);</font>
+00363 <font class="comment"> destbuff = new char[compsize];</font>
+00364 <font class="comment"> if (compress((Bytef*)destbuff, &amp;compsize, (const Bytef*)currbuff.c_str(), buffsize)!=Z_OK)</font>
+00365 <font class="comment"> {</font>
+00366 <font class="comment"> cerr &lt;&lt; "Could not compress buffer: exiting\n";</font>
+00367 <font class="comment"> delete[] destbuff;</font>
+00368 <font class="comment"> exit(-1);</font>
+00369 <font class="comment"> }</font>
+00370 <font class="comment"> //cout &lt;&lt; "Compressed buffer{" &lt;&lt; compsize &lt;&lt; "}\n" &lt;&lt; destbuff &lt;&lt; "\n";</font>
+00371 <font class="comment"> //cout.flush();</font>
+00372 <font class="comment"> // write to compressed file index</font>
+00373 <font class="comment"> ulCOff = lseek(ofd[i], 0, SEEK_END);</font>
+00374 <font class="comment"> write(oxfd[i], &amp;ulCOff, 4); // offset in compressed file</font>
+00375 <font class="comment"> write(oxfd[i], &amp;compsize, 4); // compressed size</font>
+00376 <font class="comment"> write(oxfd[i], &amp;buffsize, 4); // uncompressed size</font>
+00377 <font class="comment"> cfile &lt;&lt; buffsize &lt;&lt; " -&gt; " &lt;&lt; compsize &lt;&lt; "\n";</font>
+00378 <font class="comment"> cfile2 &lt;&lt; "Compressed{" &lt;&lt; compsize &lt;&lt; "}\n" &lt;&lt; destbuff &lt;&lt; "\n";</font>
+00379 <font class="comment"> cfile2.flush();</font>
+00380 <font class="comment"></font>
+00381 <font class="comment"> //write compressed buffer to file</font>
+00382 <font class="comment"> write(ofd[i], destbuff, compsize);</font>
+00383 <font class="comment"></font>
+00384 <font class="comment"> //free(destbuff);</font>
+00385 <font class="comment"> delete[] destbuff;</font>
+00386 <font class="comment"></font>
+00387 <font class="comment"> currbuff = "";</font>
+00388 <font class="comment"> ulBuffNum++;</font>
+00389 <font class="comment"> ulIOff = 0;</font>
+00390 <font class="comment"> */</font>
+00391 }
+00392 <font class="keywordflow">else</font>
+00393 {
+00394 ulIOff += ulsize;
+00395 }
+00396 free(tmpbuf);
+00397
+00398 <font class="keywordflow">if</font> (newmodule)
+00399 {
+00400 newmodule = <font class="keyword">false</font>;
+00401 cfile &lt;&lt; <font class="stringliteral">"had a new module "</font> &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) key1 &lt;&lt; <font class="stringliteral">"{"</font> &lt;&lt; offset &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00402 writeblock(i);
+00403 }
+00404 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (newtestament)
+00405 {
+00406 newtestament = <font class="keyword">false</font>;
+00407 cfile &lt;&lt; <font class="stringliteral">"had a new testament "</font> &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) key1 &lt;&lt; <font class="stringliteral">"{"</font> &lt;&lt; offset &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00408 }
+00409 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (newbook)
+00410 {
+00411 newbook = <font class="keyword">false</font>;
+00412 cfile &lt;&lt; <font class="stringliteral">"had a new book "</font> &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) key1 &lt;&lt; <font class="stringliteral">"{"</font> &lt;&lt; offset &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00413 }
+00414 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (newchapter)
+00415 {
+00416 newchapter = <font class="keyword">false</font>;
+00417 cfile &lt;&lt; <font class="stringliteral">"had a new chapter "</font> &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) key1 &lt;&lt; <font class="stringliteral">"{"</font> &lt;&lt; offset &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00418 }
+00419 <font class="keywordflow">else</font>
+00420 {
+00421 key1++;
+00422 }
+00423
+00424 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>()!=key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>() || (key1.<a class="code" href="class_verse_key.html#a23">Book</a>()!=key2.<a class="code" href="class_verse_key.html#a23">Book</a>()))
+00425 {
+00426 newchapter = <font class="keyword">true</font>;
+00427 cfile &lt;&lt; <font class="stringliteral">"got a new chapter "</font> &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) key1 &lt;&lt; <font class="stringliteral">"\n"</font>;
+00428 }
+00429 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a23">Book</a>()!=key2.<a class="code" href="class_verse_key.html#a23">Book</a>())
+00430 {
+00431 newbook = <font class="keyword">true</font>;
+00432 cfile &lt;&lt; <font class="stringliteral">"got a new book "</font> &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *) key1 &lt;&lt; <font class="stringliteral">"\n"</font>;
+00433 }
+00434 key2 = key1;
+00435
+00436 }
+00437 <font class="keywordflow">else</font>
+00438 {
+00439 cfile &lt;&lt; <font class="stringliteral">"empty offset\n"</font>;
+00440 <font class="comment">// write to verse index into compressed</font>
+00441 write(ovxfd[i], &amp;ulNone, 4); <font class="comment">// current buffer number</font>
+00442 write(ovxfd[i], &amp;size, 2); <font class="comment">// verse size</font>
+00443 write(ovxfd[i], &amp;ulNone, 4); <font class="comment">// offset within the buffer</font>
+00444 }
+00445 }
+00446 <font class="keywordflow">while</font> ( (key1.<a class="code" href="class_verse_key.html#a22">Testament</a>()==i+1) &amp;&amp; ((key1.<a class="code" href="class_verse_key.html#a38">compare</a>(<font class="stringliteral">"Revelation of John 22:21"</font>)==-1) || (lasttodo)));
+00447
+00448 close(ifd[i]);
+00449 close(ofd[i]);
+00450 close(ixfd[i]);
+00451 close(oxfd[i]);
+00452 close(ovxfd[i]);
+00453 close(itestfd[i]);
+00454 close(itestxfd[i]);
+00455 }
+00456 <font class="keywordflow">return</font> 1;
+00457 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlfootnotes_8cpp-source.html b/doc/api-documentation/html/thmlfootnotes_8cpp-source.html
new file mode 100644
index 0000000..ae85a41
--- /dev/null
+++ b/doc/api-documentation/html/thmlfootnotes_8cpp-source.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlfootnotes.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlfootnotes.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlfootnotes - SWFilter decendant to hide or show footnotes</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;thmlfootnotes.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLFootnotes::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLFootnotes::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLFootnotes::optName[] = <font class="stringliteral">"Footnotes"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLFootnotes::optTip[] = <font class="stringliteral">"Toggles Footnotes On and Off if they exist"</font>;
+00021
+00022
+00023 ThMLFootnotes::ThMLFootnotes() {
+00024 option = <font class="keyword">false</font>;
+00025 options.push_back(on);
+00026 options.push_back(off);
+00027 }
+00028
+00029
+00030 ThMLFootnotes::~ThMLFootnotes() {
+00031 }
+00032
+00033 <font class="keywordtype">void</font> ThMLFootnotes::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00034 {
+00035 option = (!stricmp(ival, on));
+00036 }
+00037
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLFootnotes::getOptionValue()
+00039 {
+00040 <font class="keywordflow">return</font> (option) ? on:off;
+00041 }
+00042
+00043 <font class="keywordtype">char</font> ThMLFootnotes::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00044 {
+00045 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want footnotes</font>
+00046 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00051
+00052 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00053 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00054 memmove(&amp;text[maxlen - len], text, len);
+00055 from = &amp;text[maxlen - len];
+00056 }
+00057 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00058
+00059 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00061 intoken = <font class="keyword">true</font>;
+00062 tokpos = 0;
+00063 token[0] = 0;
+00064 token[1] = 0;
+00065 token[2] = 0;
+00066 <font class="keywordflow">continue</font>;
+00067 }
+00068 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00069 intoken = <font class="keyword">false</font>;
+00070 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00071 hide = <font class="keyword">true</font>;
+00072 <font class="keywordflow">continue</font>;
+00073 }
+00074 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/note"</font>, 5)) {
+00075 hide = <font class="keyword">false</font>;
+00076 <font class="keywordflow">continue</font>;
+00077 }
+00078
+00079 <font class="comment">// if not a footnote token, keep token in text</font>
+00080 <font class="keywordflow">if</font> (!hide) {
+00081 *to++ = <font class="charliteral">'&lt;'</font>;
+00082 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00083 *to++ = *tok;
+00084 *to++ = <font class="charliteral">'&gt;'</font>;
+00085 }
+00086 <font class="keywordflow">continue</font>;
+00087 }
+00088 <font class="keywordflow">if</font> (intoken) {
+00089 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00090 token[tokpos++] = *from;
+00091 token[tokpos+2] = 0;
+00092 }
+00093 <font class="keywordflow">else</font> {
+00094 <font class="keywordflow">if</font> (!hide) {
+00095 *to++ = *from;
+00096 }
+00097 }
+00098 }
+00099 *to++ = 0;
+00100 *to = 0;
+00101 }
+00102 <font class="keywordflow">return</font> 0;
+00103 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlfootnotes_8h-source.html b/doc/api-documentation/html/thmlfootnotes_8h-source.html
new file mode 100644
index 0000000..7576f78
--- /dev/null
+++ b/doc/api-documentation/html/thmlfootnotes_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlfootnotes.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlfootnotes.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id:</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLFOOTNOTES_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLFOOTNOTES_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_footnotes.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_th_m_l_footnotes.html">ThMLFootnotes</a> ();
+00040 <font class="keyword">virtual</font> ~ ThMLFootnotes ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlgbf_8cpp-source.html b/doc/api-documentation/html/thmlgbf_8cpp-source.html
new file mode 100644
index 0000000..21ac839
--- /dev/null
+++ b/doc/api-documentation/html/thmlgbf_8cpp-source.html
@@ -0,0 +1,344 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlgbf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlgbf.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlgbf.cpp - ThML to GBF filter</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 1999-10-28</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;thmlgbf.h&gt;</font>
+00020
+00021
+00022 ThMLGBF::ThMLGBF()
+00023 {
+00024 }
+00025
+00026
+00027 <font class="keywordtype">char</font> ThMLGBF::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen)
+00028 {
+00029 <font class="keywordtype">char</font> *to, *from, token[2048];
+00030 <font class="keywordtype">int</font> tokpos = 0;
+00031 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00032 <font class="keywordtype">int</font> len;
+00033 <font class="keywordtype">bool</font> ampersand = <font class="keyword">false</font>;
+00034 <font class="keywordtype">bool</font> sechead = <font class="keyword">false</font>;
+00035 <font class="keywordtype">bool</font> title = <font class="keyword">false</font>;
+00036
+00037 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00038 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00039 memmove(&amp;text[maxlen - len], text, len);
+00040 from = &amp;text[maxlen - len];
+00041 }
+00042 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00043 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00044 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00045 intoken = <font class="keyword">true</font>;
+00046 tokpos = 0;
+00047 token[0] = 0;
+00048 token[1] = 0;
+00049 token[2] = 0;
+00050 ampersand = <font class="keyword">false</font>;
+00051 <font class="keywordflow">continue</font>;
+00052 }
+00053 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == <font class="charliteral">'&amp;'</font>) {
+00054 intoken = <font class="keyword">true</font>;
+00055 tokpos = 0;
+00056 memset(token, 0, 2048);
+00057 ampersand = <font class="keyword">true</font>;
+00058 <font class="keywordflow">continue</font>;
+00059 }
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">';'</font> &amp;&amp; ampersand) {
+00061 intoken = <font class="keyword">false</font>;
+00062
+00063 <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"nbsp"</font>, token, 4)) *to++ = <font class="charliteral">' '</font>;
+00064 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"quot"</font>, token, 4)) *to++ = <font class="charliteral">'"'</font>;
+00065 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"amp"</font>, token, 3)) *to++ = <font class="charliteral">'&amp;'</font>;
+00066 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"lt"</font>, token, 2)) *to++ = <font class="charliteral">'&lt;'</font>;
+00067 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"gt"</font>, token, 2)) *to++ = <font class="charliteral">'&gt;'</font>;
+00068 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"brvbar"</font>, token, 6)) *to++ = <font class="charliteral">'|'</font>;
+00069 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sect"</font>, token, 4)) *to++ = <font class="charliteral">'§'</font>;
+00070 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"copy"</font>, token, 4)) *to++ = <font class="charliteral">'©'</font>;
+00071 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"laquo"</font>, token, 5)) *to++ = <font class="charliteral">'«'</font>;
+00072 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"reg"</font>, token, 3)) *to++ = <font class="charliteral">'®'</font>;
+00073 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"acute"</font>, token, 5)) *to++ = <font class="charliteral">'´'</font>;
+00074 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"para"</font>, token, 4)) *to++ = <font class="charliteral">'¶'</font>;
+00075 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"raquo"</font>, token, 5)) *to++ = <font class="charliteral">'»'</font>;
+00076
+00077 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Aacute"</font>, token, 6)) *to++ = <font class="charliteral">'Á'</font>;
+00078 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Agrave"</font>, token, 6)) *to++ = <font class="charliteral">'À'</font>;
+00079 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Acirc"</font>, token, 5)) *to++ = <font class="charliteral">'Â'</font>;
+00080 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Auml"</font>, token, 4)) *to++ = <font class="charliteral">'Ä'</font>;
+00081 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Atilde"</font>, token, 6)) *to++ = <font class="charliteral">'Ã'</font>;
+00082 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Aring"</font>, token, 5)) *to++ = <font class="charliteral">'Å'</font>;
+00083 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aacute"</font>, token, 6)) *to++ = <font class="charliteral">'á'</font>;
+00084 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"agrave"</font>, token, 6)) *to++ = <font class="charliteral">'à'</font>;
+00085 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"acirc"</font>, token, 5)) *to++ = <font class="charliteral">'â'</font>;
+00086 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"auml"</font>, token, 4)) *to++ = <font class="charliteral">'ä'</font>;
+00087 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"atilde"</font>, token, 6)) *to++ = <font class="charliteral">'ã'</font>;
+00088 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aring"</font>, token, 5)) *to++ = <font class="charliteral">'å'</font>;
+00089 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Eacute"</font>, token, 6)) *to++ = <font class="charliteral">'É'</font>;
+00090 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Egrave"</font>, token, 6)) *to++ = <font class="charliteral">'È'</font>;
+00091 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ecirc"</font>, token, 5)) *to++ = <font class="charliteral">'Ê'</font>;
+00092 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Euml"</font>, token, 4)) *to++ = <font class="charliteral">'Ë'</font>;
+00093 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"eacute"</font>, token, 6)) *to++ = <font class="charliteral">'é'</font>;
+00094 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"egrave"</font>, token, 6)) *to++ = <font class="charliteral">'è'</font>;
+00095 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ecirc"</font>, token, 5)) *to++ = <font class="charliteral">'ê'</font>;
+00096 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"euml"</font>, token, 4)) *to++ = <font class="charliteral">'ë'</font>;
+00097 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Iacute"</font>, token, 6)) *to++ = <font class="charliteral">'Í'</font>;
+00098 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Igrave"</font>, token, 6)) *to++ = <font class="charliteral">'Ì'</font>;
+00099 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Icirc"</font>, token, 5)) *to++ = <font class="charliteral">'Î'</font>;
+00100 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Iuml"</font>, token, 4)) *to++ = <font class="charliteral">'Ï'</font>;
+00101 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iacute"</font>, token, 6)) *to++ = <font class="charliteral">'í'</font>;
+00102 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"igrave"</font>, token, 6)) *to++ = <font class="charliteral">'ì'</font>;
+00103 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"icirc"</font>, token, 5)) *to++ = <font class="charliteral">'î'</font>;
+00104 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iuml"</font>, token, 4)) *to++ = <font class="charliteral">'ï'</font>;
+00105 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Oacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ó'</font>;
+00106 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ograve"</font>, token, 6)) *to++ = <font class="charliteral">'Ò'</font>;
+00107 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ocirc"</font>, token, 5)) *to++ = <font class="charliteral">'Ô'</font>;
+00108 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ouml"</font>, token, 4)) *to++ = <font class="charliteral">'Ö'</font>;
+00109 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Otilde"</font>, token, 6)) *to++ = <font class="charliteral">'Õ'</font>;
+00110 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"oacute"</font>, token, 6)) *to++ = <font class="charliteral">'ó'</font>;
+00111 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ograve"</font>, token, 6)) *to++ = <font class="charliteral">'ò'</font>;
+00112 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ocirc"</font>, token, 5)) *to++ = <font class="charliteral">'ô'</font>;
+00113 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ouml"</font>, token, 4)) *to++ = <font class="charliteral">'ö'</font>;
+00114 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"otilde"</font>, token, 6)) *to++ = <font class="charliteral">'õ'</font>;
+00115 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Uacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ú'</font>;
+00116 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ugrave"</font>, token, 6)) *to++ = <font class="charliteral">'Ù'</font>;
+00117 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ucirc"</font>, token, 5)) *to++ = <font class="charliteral">'Û'</font>;
+00118 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Uuml"</font>, token, 4)) *to++ = <font class="charliteral">'Ü'</font>;
+00119 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uacute"</font>, token, 6)) *to++ = <font class="charliteral">'ú'</font>;
+00120 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ugrave"</font>, token, 6)) *to++ = <font class="charliteral">'ù'</font>;
+00121 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ucirc"</font>, token, 5)) *to++ = <font class="charliteral">'û'</font>;
+00122 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uuml"</font>, token, 4)) *to++ = <font class="charliteral">'ü'</font>;
+00123 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Yacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ý'</font>;
+00124 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yacute"</font>, token, 6)) *to++ = <font class="charliteral">'ý'</font>;
+00125 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yuml"</font>, token, 4)) *to++ = <font class="charliteral">'ÿ'</font>;
+00126
+00127 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"deg"</font>, token, 3)) *to++ = <font class="charliteral">'°'</font>;
+00128 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"plusmn"</font>, token, 6)) *to++ = <font class="charliteral">'±'</font>;
+00129 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup2"</font>, token, 4)) *to++ = <font class="charliteral">'²'</font>;
+00130 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup3"</font>, token, 4)) *to++ = <font class="charliteral">'³'</font>;
+00131 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup1"</font>, token, 4)) *to++ = <font class="charliteral">'¹'</font>;
+00132 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"nbsp"</font>, token, 4)) *to++ = <font class="charliteral">'º'</font>;
+00133 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"pound"</font>, token, 5)) *to++ = <font class="charliteral">'£'</font>;
+00134 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"cent"</font>, token, 4)) *to++ = <font class="charliteral">'¢'</font>;
+00135 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac14"</font>, token, 6)) *to++ = <font class="charliteral">'¼'</font>;
+00136 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac12"</font>, token, 6)) *to++ = <font class="charliteral">'½'</font>;
+00137 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac34"</font>, token, 6)) *to++ = <font class="charliteral">'¾'</font>;
+00138 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iquest"</font>, token, 6)) *to++ = <font class="charliteral">'¿'</font>;
+00139 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iexcl"</font>, token, 5)) *to++ = <font class="charliteral">'¡'</font>;
+00140 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ETH"</font>, token, 3)) *to++ = <font class="charliteral">'Ð'</font>;
+00141 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"eth"</font>, token, 3)) *to++ = <font class="charliteral">'ð'</font>;
+00142 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"THORN"</font>, token, 5)) *to++ = <font class="charliteral">'Þ'</font>;
+00143 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"thorn"</font>, token, 5)) *to++ = <font class="charliteral">'þ'</font>;
+00144 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"AElig"</font>, token, 5)) *to++ = <font class="charliteral">'Æ'</font>;
+00145 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aelig"</font>, token, 5)) *to++ = <font class="charliteral">'æ'</font>;
+00146 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Oslash"</font>, token, 6)) *to++ = <font class="charliteral">'Ø'</font>;
+00147 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"curren"</font>, token, 6)) *to++ = <font class="charliteral">'¤'</font>;
+00148 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ccedil"</font>, token, 6)) *to++ = <font class="charliteral">'Ç'</font>;
+00149 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ccedil"</font>, token, 6)) *to++ = <font class="charliteral">'ç'</font>;
+00150 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"szlig"</font>, token, 5)) *to++ = <font class="charliteral">'ß'</font>;
+00151 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ntilde"</font>, token, 6)) *to++ = <font class="charliteral">'Ñ'</font>;
+00152 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ntilde"</font>, token, 6)) *to++ = <font class="charliteral">'ñ'</font>;
+00153 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yen"</font>, token, 3)) *to++ = <font class="charliteral">'¥'</font>;
+00154 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"not"</font>, token, 3)) *to++ = <font class="charliteral">'¬'</font>;
+00155 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ordf"</font>, token, 4)) *to++ = <font class="charliteral">'ª'</font>;
+00156 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uml"</font>, token, 3)) *to++ = <font class="charliteral">'¨'</font>;
+00157 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"shy"</font>, token, 3)) *to++ = <font class="charliteral">'­'</font>;
+00158 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"macr"</font>, token, 4)) *to++ = <font class="charliteral">'¯'</font>;
+00159 <font class="keywordflow">continue</font>;
+00160
+00161 }
+00162 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font> &amp;&amp; !ampersand) {
+00163 intoken = <font class="keyword">false</font>;
+00164 <font class="comment">// process desired tokens</font>
+00165 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\""</font>, 27)) {
+00166 *to++ = <font class="charliteral">'&lt;'</font>;
+00167 *to++ = <font class="charliteral">'W'</font>;
+00168 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 27; token[i] != <font class="charliteral">'\"'</font>; i++)
+00169 *to++ = token[i];
+00170 *to++ = <font class="charliteral">'&gt;'</font>;
+00171 <font class="keywordflow">continue</font>;
+00172 }
+00173 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\" value=\""</font>, 25)) {
+00174 *to++ = <font class="charliteral">'&lt;'</font>;
+00175 *to++ = <font class="charliteral">'W'</font>;
+00176 *to++ = <font class="charliteral">'T'</font>;
+00177 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00178 *to++ = token[i];
+00179 *to++ = <font class="charliteral">'&gt;'</font>;
+00180 <font class="keywordflow">continue</font>;
+00181 }
+00182 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00183 *to++ = <font class="charliteral">'&lt;'</font>;
+00184 *to++ = <font class="charliteral">'R'</font>;
+00185 *to++ = <font class="charliteral">'X'</font>;
+00186 *to++ = <font class="charliteral">'&gt;'</font>;
+00187 <font class="keywordflow">continue</font>;
+00188 }
+00189 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/scripRef"</font>, 9)) {
+00190 *to++ = <font class="charliteral">'&lt;'</font>;
+00191 *to++ = <font class="charliteral">'R'</font>;
+00192 *to++ = <font class="charliteral">'x'</font>;
+00193 *to++ = <font class="charliteral">'&gt;'</font>;
+00194 <font class="keywordflow">continue</font>;
+00195 }
+00196 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00197 *to++ = <font class="charliteral">'&lt;'</font>;
+00198 *to++ = <font class="charliteral">'R'</font>;
+00199 *to++ = <font class="charliteral">'F'</font>;
+00200 *to++ = <font class="charliteral">'&gt;'</font>;
+00201 <font class="keywordflow">continue</font>;
+00202 }
+00203 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/note"</font>, 5)) {
+00204 *to++ = <font class="charliteral">'&lt;'</font>;
+00205 *to++ = <font class="charliteral">'R'</font>;
+00206 *to++ = <font class="charliteral">'f'</font>;
+00207 *to++ = <font class="charliteral">'&gt;'</font>;
+00208 <font class="keywordflow">continue</font>;
+00209 }
+00210 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sup"</font>, 3)) {
+00211 *to++ = <font class="charliteral">'&lt;'</font>;
+00212 *to++ = <font class="charliteral">'F'</font>;
+00213 *to++ = <font class="charliteral">'S'</font>;
+00214 *to++ = <font class="charliteral">'&gt;'</font>;
+00215 }
+00216 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/sup"</font>, 4)) {
+00217 *to++ = <font class="charliteral">'&lt;'</font>;
+00218 *to++ = <font class="charliteral">'F'</font>;
+00219 *to++ = <font class="charliteral">'s'</font>;
+00220 *to++ = <font class="charliteral">'&gt;'</font>;
+00221 }
+00222 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"font color=#ff0000"</font>, 18)) {
+00223 *to++ = <font class="charliteral">'&lt;'</font>;
+00224 *to++ = <font class="charliteral">'F'</font>;
+00225 *to++ = <font class="charliteral">'R'</font>;
+00226 *to++ = <font class="charliteral">'&gt;'</font>;
+00227 <font class="keywordflow">continue</font>;
+00228 }
+00229 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"/font"</font>, 5)) {
+00230 *to++ = <font class="charliteral">'&lt;'</font>;
+00231 *to++ = <font class="charliteral">'F'</font>;
+00232 *to++ = <font class="charliteral">'r'</font>;
+00233 *to++ = <font class="charliteral">'&gt;'</font>;
+00234 <font class="keywordflow">continue</font>;
+00235 }
+00236 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"sechead\""</font>, 19)) {
+00237 *to++ = <font class="charliteral">'&lt;'</font>;
+00238 *to++ = <font class="charliteral">'T'</font>;
+00239 *to++ = <font class="charliteral">'S'</font>;
+00240 *to++ = <font class="charliteral">'&gt;'</font>;
+00241 sechead = <font class="keyword">true</font>;
+00242 <font class="keywordflow">continue</font>;
+00243 }
+00244 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (sechead &amp;&amp; !strncmp(token, <font class="stringliteral">"/div"</font>, 19)) {
+00245 *to++ = <font class="charliteral">'&lt;'</font>;
+00246 *to++ = <font class="charliteral">'T'</font>;
+00247 *to++ = <font class="charliteral">'s'</font>;
+00248 *to++ = <font class="charliteral">'&gt;'</font>;
+00249 sechead = <font class="keyword">false</font>;
+00250 <font class="keywordflow">continue</font>;
+00251 }
+00252 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"title\""</font>, 19)) {
+00253 *to++ = <font class="charliteral">'&lt;'</font>;
+00254 *to++ = <font class="charliteral">'T'</font>;
+00255 *to++ = <font class="charliteral">'T'</font>;
+00256 *to++ = <font class="charliteral">'&gt;'</font>;
+00257 title = <font class="keyword">true</font>;
+00258 <font class="keywordflow">continue</font>;
+00259 }
+00260 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (title &amp;&amp; !strncmp(token, <font class="stringliteral">"/div"</font>, 19)) {
+00261 *to++ = <font class="charliteral">'&lt;'</font>;
+00262 *to++ = <font class="charliteral">'T'</font>;
+00263 *to++ = <font class="charliteral">'t'</font>;
+00264 *to++ = <font class="charliteral">'&gt;'</font>;
+00265 title = <font class="keyword">false</font>;
+00266 <font class="keywordflow">continue</font>;
+00267 }
+00268 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"br"</font>, 2)) {
+00269 *to++ = <font class="charliteral">'&lt;'</font>;
+00270 *to++ = <font class="charliteral">'C'</font>;
+00271 *to++ = <font class="charliteral">'L'</font>;
+00272 *to++ = <font class="charliteral">'&gt;'</font>;
+00273 <font class="keywordflow">continue</font>;
+00274 }
+00275 <font class="keywordflow">else</font> <font class="keywordflow">switch</font>(*token) {
+00276 <font class="keywordflow">case</font> <font class="charliteral">'I'</font>: <font class="comment">// font tags</font>
+00277 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>:
+00278 *to++ = <font class="charliteral">'&lt;'</font>;
+00279 *to++ = <font class="charliteral">'F'</font>;
+00280 *to++ = <font class="charliteral">'I'</font>;
+00281 *to++ = <font class="charliteral">'&gt;'</font>;
+00282 <font class="keywordflow">continue</font>;
+00283 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">// bold start</font>
+00284 <font class="keywordflow">case</font> <font class="charliteral">'b'</font>:
+00285 *to++ = <font class="charliteral">'&lt;'</font>;
+00286 *to++ = <font class="charliteral">'F'</font>;
+00287 *to++ = <font class="charliteral">'B'</font>;
+00288 *to++ = <font class="charliteral">'&gt;'</font>;
+00289 <font class="keywordflow">continue</font>;
+00290 <font class="keywordflow">case</font> <font class="charliteral">'/'</font>:
+00291 <font class="keywordflow">switch</font>(token[1]) {
+00292 <font class="keywordflow">case</font> <font class="charliteral">'P'</font>:
+00293 <font class="keywordflow">case</font> <font class="charliteral">'p'</font>:
+00294 *to++ = <font class="charliteral">'&lt;'</font>;
+00295 *to++ = <font class="charliteral">'C'</font>;
+00296 *to++ = <font class="charliteral">'M'</font>;
+00297 *to++ = <font class="charliteral">'&gt;'</font>;
+00298 <font class="keywordflow">continue</font>;
+00299 <font class="keywordflow">case</font> <font class="charliteral">'I'</font>:
+00300 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>: <font class="comment">// italic end</font>
+00301 *to++ = <font class="charliteral">'&lt;'</font>;
+00302 *to++ = <font class="charliteral">'F'</font>;
+00303 *to++ = <font class="charliteral">'i'</font>;
+00304 *to++ = <font class="charliteral">'&gt;'</font>;
+00305 <font class="keywordflow">continue</font>;
+00306 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">// bold start</font>
+00307 <font class="keywordflow">case</font> <font class="charliteral">'b'</font>:
+00308 *to++ = <font class="charliteral">'&lt;'</font>;
+00309 *to++ = <font class="charliteral">'F'</font>;
+00310 *to++ = <font class="charliteral">'b'</font>;
+00311 *to++ = <font class="charliteral">'&gt;'</font>;
+00312 <font class="keywordflow">continue</font>;
+00313 }
+00314 }
+00315 <font class="keywordflow">continue</font>;
+00316 }
+00317 <font class="keywordflow">if</font> (intoken) {
+00318 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00319 token[tokpos++] = *from;
+00320 token[tokpos+2] = 0;
+00321 }
+00322 <font class="keywordflow">else</font> *to++ = *from;
+00323 }
+00324 *to++ = 0;
+00325 *to = 0;
+00326 <font class="keywordflow">return</font> 0;
+00327 }
+00328
+00329
+00330
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlgbf_8h-source.html b/doc/api-documentation/html/thmlgbf_8h-source.html
new file mode 100644
index 0000000..9ba1622
--- /dev/null
+++ b/doc/api-documentation/html/thmlgbf_8h-source.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlgbf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlgbf.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlgbf.h</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLGBF_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLGBF_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_g_b_f.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_g_b_f.html">ThMLGBF</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keyword">public</font>:
+00033 <a class="code" href="class_th_m_l_g_b_f.html">ThMLGBF</a> ();
+00034 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen = -1);
+00035 };
+00036
+00037 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlheadings_8cpp-source.html b/doc/api-documentation/html/thmlheadings_8cpp-source.html
new file mode 100644
index 0000000..a3ac50e
--- /dev/null
+++ b/doc/api-documentation/html/thmlheadings_8cpp-source.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlheadings.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlheadings.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlheadings - SWFilter decendant to hide or show headings</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;thmlheadings.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLHeadings::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLHeadings::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLHeadings::optName[] = <font class="stringliteral">"Headings"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLHeadings::optTip[] = <font class="stringliteral">"Toggles Headings On and Off if they exist"</font>;
+00021
+00022
+00023 ThMLHeadings::ThMLHeadings() {
+00024 option = <font class="keyword">false</font>;
+00025 options.push_back(on);
+00026 options.push_back(off);
+00027 }
+00028
+00029
+00030 ThMLHeadings::~ThMLHeadings() {
+00031 }
+00032
+00033 <font class="keywordtype">void</font> ThMLHeadings::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00034 {
+00035 option = (!stricmp(ival, on));
+00036 }
+00037
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLHeadings::getOptionValue()
+00039 {
+00040 <font class="keywordflow">return</font> (option) ? on:off;
+00041 }
+00042
+00043 <font class="keywordtype">char</font> ThMLHeadings::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00044 {
+00045 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want headings</font>
+00046 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00051
+00052 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00053 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00054 memmove(&amp;text[maxlen - len], text, len);
+00055 from = &amp;text[maxlen - len];
+00056 }
+00057 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00058
+00059 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00061 intoken = <font class="keyword">true</font>;
+00062 tokpos = 0;
+00063 token[0] = 0;
+00064 token[1] = 0;
+00065 token[2] = 0;
+00066 <font class="keywordflow">continue</font>;
+00067 }
+00068 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00069 intoken = <font class="keyword">false</font>;
+00070 <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"div class=\"sechead\""</font>, 19)) {
+00071 hide = <font class="keyword">true</font>;
+00072 <font class="keywordflow">continue</font>;
+00073 }
+00074 <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"div class=\"title\""</font>, 17)) {
+00075 hide = <font class="keyword">true</font>;
+00076 <font class="keywordflow">continue</font>;
+00077 }
+00078 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (hide &amp;&amp; !strnicmp(token, <font class="stringliteral">"/div"</font>, 4)) {
+00079 hide = <font class="keyword">false</font>;
+00080 <font class="keywordflow">continue</font>;
+00081 }
+00082
+00083 <font class="comment">// if not a heading token, keep token in text</font>
+00084 <font class="keywordflow">if</font> (!hide) {
+00085 *to++ = <font class="charliteral">'&lt;'</font>;
+00086 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00087 *to++ = *tok;
+00088 *to++ = <font class="charliteral">'&gt;'</font>;
+00089 }
+00090 <font class="keywordflow">continue</font>;
+00091 }
+00092 <font class="keywordflow">if</font> (intoken) {
+00093 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00094 token[tokpos++] = *from;
+00095 token[tokpos+2] = 0;
+00096 }
+00097 <font class="keywordflow">else</font> {
+00098 <font class="keywordflow">if</font> (!hide) {
+00099 *to++ = *from;
+00100 }
+00101 }
+00102 }
+00103 *to++ = 0;
+00104 *to = 0;
+00105 }
+00106 <font class="keywordflow">return</font> 0;
+00107 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlheadings_8h-source.html b/doc/api-documentation/html/thmlheadings_8h-source.html
new file mode 100644
index 0000000..6a2df61
--- /dev/null
+++ b/doc/api-documentation/html/thmlheadings_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlheadings.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlheadings.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: </font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLHEADINGS_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLHEADINGS_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_headings.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_headings.html">ThMLHeadings</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_th_m_l_headings.html">ThMLHeadings</a> ();
+00040 <font class="keyword">virtual</font> ~ ThMLHeadings ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlhtml_8cpp-source.html b/doc/api-documentation/html/thmlhtml_8cpp-source.html
new file mode 100644
index 0000000..6b1e37d
--- /dev/null
+++ b/doc/api-documentation/html/thmlhtml_8cpp-source.html
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlhtml.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlhtml.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlhtml.cpp - ThML to HTML filter</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 1999-10-27</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;thmlhtml.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00021
+00022
+00023 ThMLHTML::ThMLHTML() {
+00024 setTokenStart(<font class="stringliteral">"&lt;"</font>);
+00025 setTokenEnd(<font class="stringliteral">"&gt;"</font>);
+00026 <font class="comment">/*</font>
+00027 <font class="comment"> setEscapeStart("&amp;");</font>
+00028 <font class="comment"> setEscapeEnd(";");</font>
+00029 <font class="comment"></font>
+00030 <font class="comment"> setEscapeStringCaseSensitive(true);</font>
+00031 <font class="comment"></font>
+00032 <font class="comment"> addEscapeStringSubstitute("nbsp", " ");</font>
+00033 <font class="comment"> addEscapeStringSubstitute("quot", "\"");</font>
+00034 <font class="comment"> addEscapeStringSubstitute("amp", "&amp;");</font>
+00035 <font class="comment"> addEscapeStringSubstitute("lt", "&lt;");</font>
+00036 <font class="comment"> addEscapeStringSubstitute("gt", "&gt;");</font>
+00037 <font class="comment"> addEscapeStringSubstitute("brvbar", "|");</font>
+00038 <font class="comment"> addEscapeStringSubstitute("sect", "§");</font>
+00039 <font class="comment"> addEscapeStringSubstitute("copy", "©");</font>
+00040 <font class="comment"> addEscapeStringSubstitute("laquo", "«");</font>
+00041 <font class="comment"> addEscapeStringSubstitute("reg", "®");</font>
+00042 <font class="comment"> addEscapeStringSubstitute("acute", "´");</font>
+00043 <font class="comment"> addEscapeStringSubstitute("para", "¶");</font>
+00044 <font class="comment"> addEscapeStringSubstitute("raquo", "»");</font>
+00045 <font class="comment"></font>
+00046 <font class="comment"> addEscapeStringSubstitute("Aacute", "Á");</font>
+00047 <font class="comment"> addEscapeStringSubstitute("Agrave", "À");</font>
+00048 <font class="comment"> addEscapeStringSubstitute("Acirc", "Â");</font>
+00049 <font class="comment"> addEscapeStringSubstitute("Auml", "Ä");</font>
+00050 <font class="comment"> addEscapeStringSubstitute("Atilde", "Ã");</font>
+00051 <font class="comment"> addEscapeStringSubstitute("Aring", "Å");</font>
+00052 <font class="comment"> addEscapeStringSubstitute("aacute", "á");</font>
+00053 <font class="comment"> addEscapeStringSubstitute("agrave", "à");</font>
+00054 <font class="comment"> addEscapeStringSubstitute("acirc", "â");</font>
+00055 <font class="comment"> addEscapeStringSubstitute("auml", "ä");</font>
+00056 <font class="comment"> addEscapeStringSubstitute("atilde", "ã");</font>
+00057 <font class="comment"> addEscapeStringSubstitute("aring", "å");</font>
+00058 <font class="comment"> addEscapeStringSubstitute("Eacute", "É");</font>
+00059 <font class="comment"> addEscapeStringSubstitute("Egrave", "È");</font>
+00060 <font class="comment"> addEscapeStringSubstitute("Ecirc", "Ê");</font>
+00061 <font class="comment"> addEscapeStringSubstitute("Euml", "Ë");</font>
+00062 <font class="comment"> addEscapeStringSubstitute("eacute", "é");</font>
+00063 <font class="comment"> addEscapeStringSubstitute("egrave", "è");</font>
+00064 <font class="comment"> addEscapeStringSubstitute("ecirc", "ê");</font>
+00065 <font class="comment"> addEscapeStringSubstitute("euml", "ë");</font>
+00066 <font class="comment"> addEscapeStringSubstitute("Iacute", "Í");</font>
+00067 <font class="comment"> addEscapeStringSubstitute("Igrave", "Ì");</font>
+00068 <font class="comment"> addEscapeStringSubstitute("Icirc", "Î");</font>
+00069 <font class="comment"> addEscapeStringSubstitute("Iuml", "Ï");</font>
+00070 <font class="comment"> addEscapeStringSubstitute("iacute", "í");</font>
+00071 <font class="comment"> addEscapeStringSubstitute("igrave", "ì");</font>
+00072 <font class="comment"> addEscapeStringSubstitute("icirc", "î");</font>
+00073 <font class="comment"> addEscapeStringSubstitute("iuml", "ï");</font>
+00074 <font class="comment"> addEscapeStringSubstitute("Oacute", "Ó");</font>
+00075 <font class="comment"> addEscapeStringSubstitute("Ograve", "Ò");</font>
+00076 <font class="comment"> addEscapeStringSubstitute("Ocirc", "Ô");</font>
+00077 <font class="comment"> addEscapeStringSubstitute("Ouml", "Ö");</font>
+00078 <font class="comment"> addEscapeStringSubstitute("Otilde", "Õ");</font>
+00079 <font class="comment"> addEscapeStringSubstitute("oacute", "ó");</font>
+00080 <font class="comment"> addEscapeStringSubstitute("ograve", "ò");</font>
+00081 <font class="comment"> addEscapeStringSubstitute("ocirc", "ô");</font>
+00082 <font class="comment"> addEscapeStringSubstitute("ouml", "ö");</font>
+00083 <font class="comment"> addEscapeStringSubstitute("otilde", "õ");</font>
+00084 <font class="comment"> addEscapeStringSubstitute("Uacute", "Ú");</font>
+00085 <font class="comment"> addEscapeStringSubstitute("Ugrave", "Ù");</font>
+00086 <font class="comment"> addEscapeStringSubstitute("Ucirc", "Û");</font>
+00087 <font class="comment"> addEscapeStringSubstitute("Uuml", "Ü");</font>
+00088 <font class="comment"> addEscapeStringSubstitute("uacute", "ú");</font>
+00089 <font class="comment"> addEscapeStringSubstitute("ugrave", "ù");</font>
+00090 <font class="comment"> addEscapeStringSubstitute("ucirc", "û");</font>
+00091 <font class="comment"> addEscapeStringSubstitute("uuml", "ü");</font>
+00092 <font class="comment"> addEscapeStringSubstitute("Yacute", "Ý");</font>
+00093 <font class="comment"> addEscapeStringSubstitute("yacute", "ý");</font>
+00094 <font class="comment"> addEscapeStringSubstitute("yuml", "ÿ");</font>
+00095 <font class="comment"></font>
+00096 <font class="comment"> addEscapeStringSubstitute("deg", "°");</font>
+00097 <font class="comment"> addEscapeStringSubstitute("plusmn", "±");</font>
+00098 <font class="comment"> addEscapeStringSubstitute("sup2", "²");</font>
+00099 <font class="comment"> addEscapeStringSubstitute("sup3", "³");</font>
+00100 <font class="comment"> addEscapeStringSubstitute("sup1", "¹");</font>
+00101 <font class="comment"> addEscapeStringSubstitute("nbsp", "º");</font>
+00102 <font class="comment"> addEscapeStringSubstitute("pound", "£");</font>
+00103 <font class="comment"> addEscapeStringSubstitute("cent", "¢");</font>
+00104 <font class="comment"> addEscapeStringSubstitute("frac14", "¼");</font>
+00105 <font class="comment"> addEscapeStringSubstitute("frac12", "½");</font>
+00106 <font class="comment"> addEscapeStringSubstitute("frac34", "¾");</font>
+00107 <font class="comment"> addEscapeStringSubstitute("iquest", "¿");</font>
+00108 <font class="comment"> addEscapeStringSubstitute("iexcl", "¡");</font>
+00109 <font class="comment"> addEscapeStringSubstitute("ETH", "Ð");</font>
+00110 <font class="comment"> addEscapeStringSubstitute("eth", "ð");</font>
+00111 <font class="comment"> addEscapeStringSubstitute("THORN", "Þ");</font>
+00112 <font class="comment"> addEscapeStringSubstitute("thorn", "þ");</font>
+00113 <font class="comment"> addEscapeStringSubstitute("AElig", "Æ");</font>
+00114 <font class="comment"> addEscapeStringSubstitute("aelig", "æ");</font>
+00115 <font class="comment"> addEscapeStringSubstitute("Oslash", "Ø");</font>
+00116 <font class="comment"> addEscapeStringSubstitute("curren", "¤");</font>
+00117 <font class="comment"> addEscapeStringSubstitute("Ccedil", "Ç");</font>
+00118 <font class="comment"> addEscapeStringSubstitute("ccedil", "ç");</font>
+00119 <font class="comment"> addEscapeStringSubstitute("szlig", "ß");</font>
+00120 <font class="comment"> addEscapeStringSubstitute("Ntilde", "Ñ");</font>
+00121 <font class="comment"> addEscapeStringSubstitute("ntilde", "ñ");</font>
+00122 <font class="comment"> addEscapeStringSubstitute("yen", "¥");</font>
+00123 <font class="comment"> addEscapeStringSubstitute("not", "¬");</font>
+00124 <font class="comment"> addEscapeStringSubstitute("ordf", "ª");</font>
+00125 <font class="comment"> addEscapeStringSubstitute("uml", "¨");</font>
+00126 <font class="comment"> addEscapeStringSubstitute("shy", "­");</font>
+00127 <font class="comment"> addEscapeStringSubstitute("macr", "¯");</font>
+00128 <font class="comment">*/</font>
+00129 setTokenCaseSensitive(<font class="keyword">true</font>);
+00130
+00131 addTokenSubstitute(<font class="stringliteral">"/scripRef"</font>, <font class="stringliteral">" &lt;/a&gt;"</font>);
+00132 addTokenSubstitute(<font class="stringliteral">"note"</font>, <font class="stringliteral">" &lt;font color=\"#800000\"&gt;&lt;small&gt;("</font>);
+00133 addTokenSubstitute(<font class="stringliteral">"/note"</font>, <font class="stringliteral">")&lt;/small&gt;&lt;/font&gt; "</font>);
+00134 }
+00135
+00136
+<a name="l00137"></a><a class="code" href="class_th_m_l_h_t_m_l.html#b0">00137</a> <font class="keywordtype">bool</font> <a class="code" href="class_th_m_l_h_t_m_l.html#b0">ThMLHTML::handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData) {
+00138 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00139 <font class="comment">// manually process if it wasn't a simple substitution</font>
+00140 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\""</font>, 27)) {
+00141 <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'H'</font> || token[27] == <font class="charliteral">'G'</font> || token[27] == <font class="charliteral">'A'</font>) {
+00142 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;em&gt;"</font>);
+00143 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 5; *tok; tok++)
+00144 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00145 *(*buf)++ = *tok;
+00146 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/em&gt;&lt;/small&gt;"</font>);
+00147 }
+00148 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'T'</font>) {
+00149 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;i&gt;"</font>);
+00150 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 29; token[i] != <font class="charliteral">'\"'</font>; i++)
+00151 *(*buf)++ = token[i];
+00152 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/i&gt;&lt;/small&gt;"</font>);
+00153 }
+00154 }
+00155 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\" value=\""</font>, 25)) {
+00156 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;em&gt;"</font>);
+00157 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00158 *(*buf)++ = token[i];
+00159 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/em&gt;&lt;/small&gt;"</font>);
+00160 }
+00161 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"lemma\" value=\""</font>, 25)) {
+00162 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;small&gt;&lt;em&gt;("</font>);
+00163 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00164 *(*buf)++ = token[i];
+00165 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")&lt;/em&gt;&lt;/small&gt;"</font>);
+00166 }
+00167 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00168 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00169 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 9; *tok; tok++)
+00170 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00171 *(*buf)++ = *tok;
+00172 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00173 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00174 }
+00175 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"img "</font>, 4)) {
+00176 <font class="keyword">const</font> <font class="keywordtype">char</font> *src = strstr(token, <font class="stringliteral">"src"</font>);
+00177 <font class="keywordflow">if</font> (!src) <font class="comment">// assert we have a src attribute</font>
+00178 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00179
+00180 *(*buf)++ = <font class="charliteral">'&lt;'</font>;
+00181 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *c = token; *c; c++) {
+00182 <font class="keywordflow">if</font> (c == src) {
+00183 <font class="keywordflow">for</font> (;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++)
+00184 *(*buf)++ = *c;
+00185
+00186 <font class="keywordflow">if</font> (!*c) { c--; <font class="keywordflow">continue</font>; }
+00187
+00188 *(*buf)++ = <font class="charliteral">'"'</font>;
+00189 <font class="keywordflow">if</font> (*(c+1) == <font class="charliteral">'/'</font>) {
+00190 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"file:"</font>);
+00191 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, module-&gt;<a class="code" href="class_s_w_module.html#a6">getConfigEntry</a>(<font class="stringliteral">"AbsoluteDataPath"</font>));
+00192 <font class="keywordflow">if</font> (*((*buf)-1) == <font class="charliteral">'/'</font>)
+00193 c++; <font class="comment">// skip '/'</font>
+00194 }
+00195 <font class="keywordflow">continue</font>;
+00196 }
+00197 *(*buf)++ = *c;
+00198 }
+00199 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00200 }
+00201 <font class="keywordflow">else</font> <font class="keywordflow">if</font>(!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00202 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;font color=\"#800000\"&gt;&lt;small&gt;("</font>);
+00203 }
+00204
+00205 <font class="keywordflow">else</font> {
+00206 <font class="keywordflow">return</font> <font class="keyword">false</font>; <font class="comment">// we still didn't handle token</font>
+00207 }
+00208 }
+00209 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00210 }
+00211
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlhtml_8h-source.html b/doc/api-documentation/html/thmlhtml_8h-source.html
new file mode 100644
index 0000000..184142b
--- /dev/null
+++ b/doc/api-documentation/html/thmlhtml_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlhtml.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlhtml.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlhtml.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 1999-10-28</font>
+00005 <font class="comment"></font>
+00006 <font class="comment"> copyright : 1999 by Chris Little</font>
+00007 <font class="comment"> email : chrislit@chiasma.org</font>
+00008 <font class="comment"> ***************************************************************************/</font>
+00009
+00010 <font class="comment">/***************************************************************************</font>
+00011 <font class="comment"> * *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00013 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00014 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00015 <font class="comment"> * (at your option) any later version. *</font>
+00016 <font class="comment"> * *</font>
+00017 <font class="comment"> ***************************************************************************/</font>
+00018
+00019 <font class="preprocessor">#ifndef THMLHTML_H</font>
+00020 <font class="preprocessor"></font><font class="preprocessor">#define THMLHTML_H</font>
+00021 <font class="preprocessor"></font>
+00022 <font class="preprocessor">#include &lt;swbasicfilter.h&gt;</font>
+00023
+00024 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00025
+<a name="l00028"></a><a class="code" href="class_th_m_l_h_t_m_l.html">00028</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_basic_filter.html">SWBasicFilter</a> {
+00029 <font class="keyword">protected</font>:
+00030 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_basic_filter.html#b13">handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData);
+00031 <font class="keyword">public</font>:
+00032 <a class="code" href="class_th_m_l_h_t_m_l.html">ThMLHTML</a>();
+00033 };
+00034
+00035 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlhtmlhref_8cpp-source.html b/doc/api-documentation/html/thmlhtmlhref_8cpp-source.html
new file mode 100644
index 0000000..d40dd3c
--- /dev/null
+++ b/doc/api-documentation/html/thmlhtmlhref_8cpp-source.html
@@ -0,0 +1,283 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlhtmlhref.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlhtmlhref.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlhtmlhref.cpp - ThML to HTML filter with hrefs </font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 2001-09-03</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;thmlhtmlhref.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00021
+00022
+00023 ThMLHTMLHREF::ThMLHTMLHREF() {
+00024 <a class="code" href="class_s_w_basic_filter.html#b2">setTokenStart</a>(<font class="stringliteral">"&lt;"</font>);
+00025 <a class="code" href="class_s_w_basic_filter.html#b3">setTokenEnd</a>(<font class="stringliteral">"&gt;"</font>);
+00026 <font class="comment">/* </font>
+00027 <font class="comment"> setEscapeStart("&amp;");</font>
+00028 <font class="comment"> setEscapeEnd(";");</font>
+00029 <font class="comment"></font>
+00030 <font class="comment"> setEscapeStringCaseSensitive(true);</font>
+00031 <font class="comment"></font>
+00032 <font class="comment"> addEscapeStringSubstitute("nbsp", " ");</font>
+00033 <font class="comment"> addEscapeStringSubstitute("quot", "\"");</font>
+00034 <font class="comment"> addEscapeStringSubstitute("amp", "&amp;");</font>
+00035 <font class="comment"> addEscapeStringSubstitute("lt", "&lt;");</font>
+00036 <font class="comment"> addEscapeStringSubstitute("gt", "&gt;");</font>
+00037 <font class="comment"> addEscapeStringSubstitute("brvbar", "|");</font>
+00038 <font class="comment"> addEscapeStringSubstitute("sect", "§");</font>
+00039 <font class="comment"> addEscapeStringSubstitute("copy", "©");</font>
+00040 <font class="comment"> addEscapeStringSubstitute("laquo", "«");</font>
+00041 <font class="comment"> addEscapeStringSubstitute("reg", "®");</font>
+00042 <font class="comment"> addEscapeStringSubstitute("acute", "´");</font>
+00043 <font class="comment"> addEscapeStringSubstitute("para", "¶");</font>
+00044 <font class="comment"> addEscapeStringSubstitute("raquo", "»");</font>
+00045 <font class="comment"></font>
+00046 <font class="comment"> addEscapeStringSubstitute("Aacute", "Á");</font>
+00047 <font class="comment"> addEscapeStringSubstitute("Agrave", "À");</font>
+00048 <font class="comment"> addEscapeStringSubstitute("Acirc", "Â");</font>
+00049 <font class="comment"> addEscapeStringSubstitute("Auml", "Ä");</font>
+00050 <font class="comment"> addEscapeStringSubstitute("Atilde", "Ã");</font>
+00051 <font class="comment"> addEscapeStringSubstitute("Aring", "Å");</font>
+00052 <font class="comment"> addEscapeStringSubstitute("aacute", "á");</font>
+00053 <font class="comment"> addEscapeStringSubstitute("agrave", "à");</font>
+00054 <font class="comment"> addEscapeStringSubstitute("acirc", "â");</font>
+00055 <font class="comment"> addEscapeStringSubstitute("auml", "ä");</font>
+00056 <font class="comment"> addEscapeStringSubstitute("atilde", "ã");</font>
+00057 <font class="comment"> addEscapeStringSubstitute("aring", "å");</font>
+00058 <font class="comment"> addEscapeStringSubstitute("Eacute", "É");</font>
+00059 <font class="comment"> addEscapeStringSubstitute("Egrave", "È");</font>
+00060 <font class="comment"> addEscapeStringSubstitute("Ecirc", "Ê");</font>
+00061 <font class="comment"> addEscapeStringSubstitute("Euml", "Ë");</font>
+00062 <font class="comment"> addEscapeStringSubstitute("eacute", "é");</font>
+00063 <font class="comment"> addEscapeStringSubstitute("egrave", "è");</font>
+00064 <font class="comment"> addEscapeStringSubstitute("ecirc", "ê");</font>
+00065 <font class="comment"> addEscapeStringSubstitute("euml", "ë");</font>
+00066 <font class="comment"> addEscapeStringSubstitute("Iacute", "Í");</font>
+00067 <font class="comment"> addEscapeStringSubstitute("Igrave", "Ì");</font>
+00068 <font class="comment"> addEscapeStringSubstitute("Icirc", "Î");</font>
+00069 <font class="comment"> addEscapeStringSubstitute("Iuml", "Ï");</font>
+00070 <font class="comment"> addEscapeStringSubstitute("iacute", "í");</font>
+00071 <font class="comment"> addEscapeStringSubstitute("igrave", "ì");</font>
+00072 <font class="comment"> addEscapeStringSubstitute("icirc", "î");</font>
+00073 <font class="comment"> addEscapeStringSubstitute("iuml", "ï");</font>
+00074 <font class="comment"> addEscapeStringSubstitute("Oacute", "Ó");</font>
+00075 <font class="comment"> addEscapeStringSubstitute("Ograve", "Ò");</font>
+00076 <font class="comment"> addEscapeStringSubstitute("Ocirc", "Ô");</font>
+00077 <font class="comment"> addEscapeStringSubstitute("Ouml", "Ö");</font>
+00078 <font class="comment"> addEscapeStringSubstitute("Otilde", "Õ");</font>
+00079 <font class="comment"> addEscapeStringSubstitute("oacute", "ó");</font>
+00080 <font class="comment"> addEscapeStringSubstitute("ograve", "ò");</font>
+00081 <font class="comment"> addEscapeStringSubstitute("ocirc", "ô");</font>
+00082 <font class="comment"> addEscapeStringSubstitute("ouml", "ö");</font>
+00083 <font class="comment"> addEscapeStringSubstitute("otilde", "õ");</font>
+00084 <font class="comment"> addEscapeStringSubstitute("Uacute", "Ú");</font>
+00085 <font class="comment"> addEscapeStringSubstitute("Ugrave", "Ù");</font>
+00086 <font class="comment"> addEscapeStringSubstitute("Ucirc", "Û");</font>
+00087 <font class="comment"> addEscapeStringSubstitute("Uuml", "Ü");</font>
+00088 <font class="comment"> addEscapeStringSubstitute("uacute", "ú");</font>
+00089 <font class="comment"> addEscapeStringSubstitute("ugrave", "ù");</font>
+00090 <font class="comment"> addEscapeStringSubstitute("ucirc", "û");</font>
+00091 <font class="comment"> addEscapeStringSubstitute("uuml", "ü");</font>
+00092 <font class="comment"> addEscapeStringSubstitute("Yacute", "Ý");</font>
+00093 <font class="comment"> addEscapeStringSubstitute("yacute", "ý");</font>
+00094 <font class="comment"> addEscapeStringSubstitute("yuml", "ÿ");</font>
+00095 <font class="comment"></font>
+00096 <font class="comment"> addEscapeStringSubstitute("deg", "°");</font>
+00097 <font class="comment"> addEscapeStringSubstitute("plusmn", "±");</font>
+00098 <font class="comment"> addEscapeStringSubstitute("sup2", "²");</font>
+00099 <font class="comment"> addEscapeStringSubstitute("sup3", "³");</font>
+00100 <font class="comment"> addEscapeStringSubstitute("sup1", "¹");</font>
+00101 <font class="comment"> addEscapeStringSubstitute("nbsp", "º");</font>
+00102 <font class="comment"> addEscapeStringSubstitute("pound", "£");</font>
+00103 <font class="comment"> addEscapeStringSubstitute("cent", "¢");</font>
+00104 <font class="comment"> addEscapeStringSubstitute("frac14", "¼");</font>
+00105 <font class="comment"> addEscapeStringSubstitute("frac12", "½");</font>
+00106 <font class="comment"> addEscapeStringSubstitute("frac34", "¾");</font>
+00107 <font class="comment"> addEscapeStringSubstitute("iquest", "¿");</font>
+00108 <font class="comment"> addEscapeStringSubstitute("iexcl", "¡");</font>
+00109 <font class="comment"> addEscapeStringSubstitute("ETH", "Ð");</font>
+00110 <font class="comment"> addEscapeStringSubstitute("eth", "ð");</font>
+00111 <font class="comment"> addEscapeStringSubstitute("THORN", "Þ");</font>
+00112 <font class="comment"> addEscapeStringSubstitute("thorn", "þ");</font>
+00113 <font class="comment"> addEscapeStringSubstitute("AElig", "Æ");</font>
+00114 <font class="comment"> addEscapeStringSubstitute("aelig", "æ");</font>
+00115 <font class="comment"> addEscapeStringSubstitute("Oslash", "Ø");</font>
+00116 <font class="comment"> addEscapeStringSubstitute("curren", "¤");</font>
+00117 <font class="comment"> addEscapeStringSubstitute("Ccedil", "Ç");</font>
+00118 <font class="comment"> addEscapeStringSubstitute("ccedil", "ç");</font>
+00119 <font class="comment"> addEscapeStringSubstitute("szlig", "ß");</font>
+00120 <font class="comment"> addEscapeStringSubstitute("Ntilde", "Ñ");</font>
+00121 <font class="comment"> addEscapeStringSubstitute("ntilde", "ñ");</font>
+00122 <font class="comment"> addEscapeStringSubstitute("yen", "¥");</font>
+00123 <font class="comment"> addEscapeStringSubstitute("not", "¬");</font>
+00124 <font class="comment"> addEscapeStringSubstitute("ordf", "ª");</font>
+00125 <font class="comment"> addEscapeStringSubstitute("uml", "¨");</font>
+00126 <font class="comment"> addEscapeStringSubstitute("shy", "­");</font>
+00127 <font class="comment"> addEscapeStringSubstitute("macr", "¯");</font>
+00128 <font class="comment">*/</font>
+00129 setTokenCaseSensitive(<font class="keyword">true</font>);
+00130
+00131 addTokenSubstitute(<font class="stringliteral">"note"</font>, <font class="stringliteral">" &lt;font color=\"#800000\"&gt;&lt;small&gt;("</font>);
+00132 addTokenSubstitute(<font class="stringliteral">"/note"</font>, <font class="stringliteral">")&lt;/small&gt;&lt;/font&gt; "</font>);
+00133 addTokenSubstitute(<font class="stringliteral">"/scripture"</font>, <font class="stringliteral">"&lt;/i&gt; "</font>);
+00134 }
+00135
+00136
+<a name="l00137"></a><a class="code" href="class_th_m_l_h_t_m_l_h_r_e_f.html#b0">00137</a> <font class="keywordtype">bool</font> <a class="code" href="class_th_m_l_h_t_m_l_h_r_e_f.html#b0">ThMLHTMLHREF::handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData) {
+00138 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok;
+00139 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00140 <font class="comment">// manually process if it wasn't a simple substitution</font>
+00141 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync "</font>, 5)) {
+00142 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00143 <font class="keywordflow">for</font> (tok = token + 5; *(tok+1); tok++)
+00144 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00145 *(*buf)++ = *tok;
+00146 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00147 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00148
+00149 <font class="comment">//scan for value and add it to the buffer</font>
+00150 <font class="keywordflow">for</font> (tok = token + 5; *tok; tok++) {
+00151 <font class="keywordflow">if</font> (!strncmp(tok, <font class="stringliteral">"value=\""</font>, 7)) {
+00152 tok += 7;
+00153 <font class="keywordflow">for</font> (;*tok != <font class="charliteral">'\"'</font>; tok++)
+00154 *(*buf)++ = *tok;
+00155 <font class="keywordflow">break</font>;
+00156 }
+00157 }
+00158 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00159 }
+00160
+00161 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripture "</font>, 10)) {
+00162 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"true"</font>;
+00163 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;i&gt;"</font>);
+00164 }
+00165
+00166 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef p"</font>, 10) || !strncmp(token, <font class="stringliteral">"scripRef v"</font>, 10)) {
+00167 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"true"</font>;
+00168 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00169 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 9; *(tok+1); tok++)
+00170 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00171 *(*buf)++ = *tok;
+00172 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00173 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00174 }
+00175
+00176 <font class="comment">// we're starting a scripRef like "&lt;scripRef&gt;John 3:16&lt;/scripRef&gt;"</font>
+00177 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"scripRef"</font>)) {
+00178 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"false"</font>;
+00179 <font class="comment">// let's stop text from going to output</font>
+00180 userData[<font class="stringliteral">"suspendTextPassThru"</font>] = <font class="stringliteral">"true"</font>;
+00181 }
+00182
+00183 <font class="comment">// we've ended a scripRef </font>
+00184 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"/scripRef"</font>)) {
+00185 <font class="keywordflow">if</font> (userData[<font class="stringliteral">"inscriptRef"</font>] == <font class="stringliteral">"true"</font>) { <font class="comment">// like "&lt;scripRef passage="John 3:16"&gt;John 3:16&lt;/scripRef&gt;"</font>
+00186 userData[<font class="stringliteral">"inscriptRef"</font>] = <font class="stringliteral">"false"</font>;
+00187 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00188 }
+00189
+00190 <font class="keywordflow">else</font> { <font class="comment">// like "&lt;scripRef&gt;John 3:16&lt;/scripRef&gt;"</font>
+00191 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\"passage="</font>);
+00192 <font class="comment">//char *strbuf = (char *)userData["lastTextNode"].c_str();</font>
+00193 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, userData[<font class="stringliteral">"lastTextNode"</font>].c_str());
+00194 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00195 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00196 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, userData[<font class="stringliteral">"lastTextNode"</font>].c_str());
+00197 <font class="comment">// let's let text resume to output again</font>
+00198 userData[<font class="stringliteral">"suspendTextPassThru"</font>] = <font class="stringliteral">"false"</font>;
+00199 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00200 }
+00201 }
+00202
+00203 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"sechead\""</font>, 19)) {
+00204 userData[<font class="stringliteral">"SecHead"</font>] = <font class="stringliteral">"true"</font>;
+00205 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;br /&gt;&lt;b&gt;&lt;i&gt;"</font>);
+00206 }
+00207 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"title\""</font>, 19)) {
+00208 userData[<font class="stringliteral">"SecHead"</font>] = <font class="stringliteral">"true"</font>;
+00209 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;br /&gt;&lt;b&gt;&lt;i&gt;"</font>);
+00210 }
+00211 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/div"</font>, 4)) {
+00212 <font class="keywordflow">if</font> (userData[<font class="stringliteral">"SecHead"</font>] == <font class="stringliteral">"true"</font>) {
+00213 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;"</font>);
+00214 userData[<font class="stringliteral">"SecHead"</font>] = <font class="stringliteral">"false"</font>;
+00215 }
+00216 }
+00217
+00218 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\"T"</font>, 28)) {
+00219 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\""</font>);
+00220 <font class="keywordflow">for</font> (tok = token + 5; *(tok+1); tok++)
+00221 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00222 *(*buf)++ = *tok;
+00223 *(*buf)++ = <font class="charliteral">'\"'</font>;
+00224 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00225 <font class="keywordflow">for</font> (tok = token + 29; *(tok+2); tok++)
+00226 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>)
+00227 *(*buf)++ = *tok;
+00228 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00229 }
+00230 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"img "</font>, 4)) {
+00231 <font class="keyword">const</font> <font class="keywordtype">char</font> *src = strstr(token, <font class="stringliteral">"src"</font>);
+00232 <font class="keywordflow">if</font> (!src) <font class="comment">// assert we have a src attribute</font>
+00233 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00234
+00235 *(*buf)++ = <font class="charliteral">'&lt;'</font>;
+00236 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *c = token; *c; c++) {
+00237 <font class="keywordflow">if</font> (c == src) {
+00238 <font class="keywordflow">for</font> (;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++)
+00239 *(*buf)++ = *c;
+00240
+00241 <font class="keywordflow">if</font> (!*c) { c--; <font class="keywordflow">continue</font>; }
+00242
+00243 *(*buf)++ = <font class="charliteral">'"'</font>;
+00244 <font class="keywordflow">if</font> (*(c+1) == <font class="charliteral">'/'</font>) {
+00245 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"file:"</font>);
+00246 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, module-&gt;<a class="code" href="class_s_w_module.html#a6">getConfigEntry</a>(<font class="stringliteral">"AbsoluteDataPath"</font>));
+00247 <font class="keywordflow">if</font> (*((*buf)-1) == <font class="charliteral">'/'</font>)
+00248 c++; <font class="comment">// skip '/'</font>
+00249 }
+00250 <font class="keywordflow">continue</font>;
+00251 }
+00252 *(*buf)++ = *c;
+00253 }
+00254 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00255 }
+00256 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00257 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" &lt;small&gt;&lt;font color=\"#800000\"&gt;("</font>);
+00258 }
+00259 <font class="keywordflow">else</font> {
+00260 *(*buf)++ = <font class="charliteral">'&lt;'</font>;
+00261 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00262 *(*buf)++ = *tok;
+00263 *(*buf)++ = <font class="charliteral">'&gt;'</font>;
+00264 <font class="comment">//return false; // we still didn't handle token</font>
+00265 }
+00266 }
+00267 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00268 }
+00269
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlhtmlhref_8h-source.html b/doc/api-documentation/html/thmlhtmlhref_8h-source.html
new file mode 100644
index 0000000..b151b17
--- /dev/null
+++ b/doc/api-documentation/html/thmlhtmlhref_8h-source.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlhtmlhref.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlhtmlhref.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlhtmlhref.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 2001-09-03</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#ifndef _THMLHTMLHREF_H</font>
+00018 <font class="preprocessor"></font><font class="preprocessor">#define _THMLHTMLHREF_H</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#include &lt;swbasicfilter.h&gt;</font>
+00021
+00022 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00023
+<a name="l00026"></a><a class="code" href="class_th_m_l_h_t_m_l_h_r_e_f.html">00026</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_basic_filter.html">SWBasicFilter</a> {
+00027 <font class="keyword">protected</font>:
+00028 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_basic_filter.html#b13">handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData);
+00029 <font class="keyword">public</font>:
+00030 <a class="code" href="class_th_m_l_h_t_m_l_h_r_e_f.html">ThMLHTMLHREF</a>();
+00031 };
+00032
+00033 <font class="preprocessor">#endif </font><font class="comment">/* _THMLHTMLHREF_H */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmllemma_8cpp-source.html b/doc/api-documentation/html/thmllemma_8cpp-source.html
new file mode 100644
index 0000000..a5895e8
--- /dev/null
+++ b/doc/api-documentation/html/thmllemma_8cpp-source.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmllemma.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmllemma.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmllemma - SWFilter decendant to hide or show lemmas</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;thmllemma.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLLemma::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLLemma::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLLemma::optName[] = <font class="stringliteral">"Lemmas"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLLemma::optTip[] = <font class="stringliteral">"Toggles Lemmas On and Off if they exist"</font>;
+00021
+00022 ThMLLemma::ThMLLemma() {
+00023 option = <font class="keyword">false</font>;
+00024 options.push_back(on);
+00025 options.push_back(off);
+00026 }
+00027
+00028
+00029 ThMLLemma::~ThMLLemma() {
+00030 }
+00031
+00032 <font class="keywordtype">void</font> ThMLLemma::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00033 {
+00034 option = (!stricmp(ival, on));
+00035 }
+00036
+00037 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLLemma::getOptionValue()
+00038 {
+00039 <font class="keywordflow">return</font> (option) ? on:off;
+00040 }
+00041
+00042 <font class="keywordtype">char</font> ThMLLemma::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00043 {
+00044 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want lemmas</font>
+00045 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00046 <font class="keywordtype">int</font> tokpos = 0;
+00047 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00048 <font class="keywordtype">int</font> len;
+00049 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00050
+00051 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00052 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00053 memmove(&amp;text[maxlen - len], text, len);
+00054 from = &amp;text[maxlen - len];
+00055 }
+00056 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00057
+00058 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00059 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00060 intoken = <font class="keyword">true</font>;
+00061 tokpos = 0;
+00062 token[0] = 0;
+00063 token[1] = 0;
+00064 token[2] = 0;
+00065 <font class="keywordflow">continue</font>;
+00066 }
+00067 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00068 intoken = <font class="keyword">false</font>;
+00069 <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"sync type=\"lemma\" "</font>, 18)) { <font class="comment">// Lemma</font>
+00070 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">' '</font>) || (from[1] == <font class="charliteral">','</font>) || (from[1] == <font class="charliteral">';'</font>) || (from[1] == <font class="charliteral">'.'</font>) || (from[1] == <font class="charliteral">'?'</font>) || (from[1] == <font class="charliteral">'!'</font>) || (from[1] == <font class="charliteral">')'</font>) || (from[1] == <font class="charliteral">'\''</font>) || (from[1] == <font class="charliteral">'\"'</font>)) {
+00071 <font class="keywordflow">if</font> (lastspace)
+00072 to--;
+00073 }
+00074 <font class="keywordflow">continue</font>;
+00075 }
+00076 <font class="comment">// if not a lemma token, keep token in text</font>
+00077 *to++ = <font class="charliteral">'&lt;'</font>;
+00078 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00079 *to++ = *tok;
+00080 *to++ = <font class="charliteral">'&gt;'</font>;
+00081 <font class="keywordflow">continue</font>;
+00082 }
+00083 <font class="keywordflow">if</font> (intoken) {
+00084 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00085 token[tokpos++] = *from;
+00086 token[tokpos+2] = 0;
+00087 }
+00088 <font class="keywordflow">else</font> {
+00089 *to++ = *from;
+00090 lastspace = (*from == <font class="charliteral">' '</font>);
+00091 }
+00092 }
+00093 *to++ = 0;
+00094 *to = 0;
+00095 }
+00096 <font class="keywordflow">return</font> 0;
+00097 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmllemma_8h-source.html b/doc/api-documentation/html/thmllemma_8h-source.html
new file mode 100644
index 0000000..cff85fb
--- /dev/null
+++ b/doc/api-documentation/html/thmllemma_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmllemma.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmllemma.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: </font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLLEMMA_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLLEMMA_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_lemma.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_lemma.html">ThMLLemma</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_th_m_l_lemma.html">ThMLLemma</a> ();
+00040 <font class="keyword">virtual</font> ~ ThMLLemma ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlmorph_8cpp-source.html b/doc/api-documentation/html/thmlmorph_8cpp-source.html
new file mode 100644
index 0000000..411f8d3
--- /dev/null
+++ b/doc/api-documentation/html/thmlmorph_8cpp-source.html
@@ -0,0 +1,112 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlmorph.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlmorph.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlmorph - SWFilter decendant to hide or show morph tags</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;thmlmorph.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLMorph::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLMorph::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLMorph::optName[] = <font class="stringliteral">"Morphological Tags"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLMorph::optTip[] = <font class="stringliteral">"Toggles Morphological Tags On and Off if they exist"</font>;
+00021
+00022
+00023 ThMLMorph::ThMLMorph() {
+00024 option = <font class="keyword">false</font>;
+00025 options.push_back(on);
+00026 options.push_back(off);
+00027 }
+00028
+00029
+00030 ThMLMorph::~ThMLMorph() {
+00031 }
+00032
+00033 <font class="keywordtype">void</font> ThMLMorph::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00034 {
+00035 option = (!stricmp(ival, on));
+00036 }
+00037
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLMorph::getOptionValue()
+00039 {
+00040 <font class="keywordflow">return</font> (option) ? on:off;
+00041 }
+00042
+00043 <font class="keywordtype">char</font> ThMLMorph::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00044 {
+00045 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want morph tags</font>
+00046 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00051
+00052 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00053 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00054 memmove(&amp;text[maxlen - len], text, len);
+00055 from = &amp;text[maxlen - len];
+00056 }
+00057 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00058
+00059 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00061 intoken = <font class="keyword">true</font>;
+00062 tokpos = 0;
+00063 token[0] = 0;
+00064 token[1] = 0;
+00065 token[2] = 0;
+00066 <font class="keywordflow">continue</font>;
+00067 }
+00068 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00069 intoken = <font class="keyword">false</font>;
+00070 <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"sync type=\"morph\" "</font>, 18)) { <font class="comment">// Morph</font>
+00071 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">' '</font>) || (from[1] == <font class="charliteral">','</font>) || (from[1] == <font class="charliteral">';'</font>) || (from[1] == <font class="charliteral">'.'</font>) || (from[1] == <font class="charliteral">'?'</font>) || (from[1] == <font class="charliteral">'!'</font>) || (from[1] == <font class="charliteral">')'</font>) || (from[1] == <font class="charliteral">'\''</font>) || (from[1] == <font class="charliteral">'\"'</font>)) {
+00072 <font class="keywordflow">if</font> (lastspace)
+00073 to--;
+00074 }
+00075 <font class="keywordflow">continue</font>;
+00076 }
+00077 <font class="comment">// if not a morph tag token, keep token in text</font>
+00078 *to++ = <font class="charliteral">'&lt;'</font>;
+00079 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00080 *to++ = *tok;
+00081 *to++ = <font class="charliteral">'&gt;'</font>;
+00082 <font class="keywordflow">continue</font>;
+00083 }
+00084 <font class="keywordflow">if</font> (intoken) {
+00085 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00086 token[tokpos++] = *from;
+00087 token[tokpos+2] = 0;
+00088 }
+00089 <font class="keywordflow">else</font> {
+00090 *to++ = *from;
+00091 lastspace = (*from == <font class="charliteral">' '</font>);
+00092 }
+00093 }
+00094 *to++ = 0;
+00095 *to = 0;
+00096 }
+00097 <font class="keywordflow">return</font> 0;
+00098 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlmorph_8h-source.html b/doc/api-documentation/html/thmlmorph_8h-source.html
new file mode 100644
index 0000000..533af3c
--- /dev/null
+++ b/doc/api-documentation/html/thmlmorph_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlmorph.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlmorph.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> * $Id:</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef THMLMORPH_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define THMLMORPH_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_th_m_l_morph.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_morph.html">ThMLMorph</a>:<font class="keyword">public</font> SWFilter
+00030 {
+00031 <font class="keywordtype">bool</font> option;
+00032 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00036 OptionsList options;
+00037 <font class="keyword">public</font>:
+00038 <a class="code" href="class_th_m_l_morph.html">ThMLMorph</a> ();
+00039 <font class="keyword">virtual</font> ~ ThMLMorph ();
+00040 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00041 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00042 {
+00043 <font class="keywordflow">return</font> optName;
+00044 }
+00045 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00046 {
+00047 <font class="keywordflow">return</font> optTip;
+00048 }
+00049 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00050 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00051 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00052 {
+00053 <font class="keywordflow">return</font> options;
+00054 }
+00055 };
+00056
+00057 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlolb_8cpp-source.html b/doc/api-documentation/html/thmlolb_8cpp-source.html
new file mode 100644
index 0000000..fa78ebc
--- /dev/null
+++ b/doc/api-documentation/html/thmlolb_8cpp-source.html
@@ -0,0 +1,257 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlolb.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlolb.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlolb.cpp - ThML to OLB filter</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 2001-05-10</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;thmlolb.h&gt;</font>
+00020
+00021
+00022 ThMLOLB::ThMLOLB()
+00023 {
+00024 }
+00025
+00026
+00027 <font class="keywordtype">char</font> ThMLOLB::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen)
+00028 {
+00029 <font class="keywordtype">char</font> *to, *from, token[2048];
+00030 <font class="keywordtype">int</font> tokpos = 0;
+00031 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00032 <font class="keywordtype">int</font> len;
+00033 <font class="keywordtype">bool</font> ampersand = <font class="keyword">false</font>;
+00034 <font class="keywordtype">int</font> i;
+00035
+00036 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00037 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00038 memmove(&amp;text[maxlen - len], text, len);
+00039 from = &amp;text[maxlen - len];
+00040 }
+00041 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00042 <font class="keywordflow">for</font> (to = text; *from; from++)
+00043 {
+00044 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00045 intoken = <font class="keyword">true</font>;
+00046 tokpos = 0;
+00047 memset(token, 0, 2048);
+00048 ampersand = <font class="keyword">false</font>;
+00049 <font class="keywordflow">continue</font>;
+00050 }
+00051 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == <font class="charliteral">'&amp;'</font>) {
+00052 intoken = <font class="keyword">true</font>;
+00053 tokpos = 0;
+00054 memset(token, 0, 2048);
+00055 ampersand = <font class="keyword">true</font>;
+00056 <font class="keywordflow">continue</font>;
+00057 }
+00058 <font class="keywordflow">if</font> (*from == <font class="charliteral">';'</font> &amp;&amp; ampersand) {
+00059 intoken = <font class="keyword">false</font>;
+00060
+00061 <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"nbsp"</font>, token, 4)) *to++ = <font class="charliteral">' '</font>;
+00062 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"quot"</font>, token, 4)) *to++ = <font class="charliteral">'"'</font>;
+00063 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"amp"</font>, token, 3)) *to++ = <font class="charliteral">'&amp;'</font>;
+00064 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"lt"</font>, token, 2)) *to++ = <font class="charliteral">'&lt;'</font>;
+00065 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"gt"</font>, token, 2)) *to++ = <font class="charliteral">'&gt;'</font>;
+00066 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"brvbar"</font>, token, 6)) *to++ = <font class="charliteral">'|'</font>;
+00067 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sect"</font>, token, 4)) *to++ = <font class="charliteral">'§'</font>;
+00068 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"copy"</font>, token, 4)) *to++ = <font class="charliteral">'©'</font>;
+00069 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"laquo"</font>, token, 5)) *to++ = <font class="charliteral">'«'</font>;
+00070 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"reg"</font>, token, 3)) *to++ = <font class="charliteral">'®'</font>;
+00071 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"acute"</font>, token, 5)) *to++ = <font class="charliteral">'´'</font>;
+00072 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"para"</font>, token, 4)) *to++ = <font class="charliteral">'¶'</font>;
+00073 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"raquo"</font>, token, 5)) *to++ = <font class="charliteral">'»'</font>;
+00074
+00075 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Aacute"</font>, token, 6)) *to++ = <font class="charliteral">'Á'</font>;
+00076 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Agrave"</font>, token, 6)) *to++ = <font class="charliteral">'À'</font>;
+00077 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Acirc"</font>, token, 5)) *to++ = <font class="charliteral">'Â'</font>;
+00078 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Auml"</font>, token, 4)) *to++ = <font class="charliteral">'Ä'</font>;
+00079 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Atilde"</font>, token, 6)) *to++ = <font class="charliteral">'Ã'</font>;
+00080 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Aring"</font>, token, 5)) *to++ = <font class="charliteral">'Å'</font>;
+00081 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aacute"</font>, token, 6)) *to++ = <font class="charliteral">'á'</font>;
+00082 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"agrave"</font>, token, 6)) *to++ = <font class="charliteral">'à'</font>;
+00083 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"acirc"</font>, token, 5)) *to++ = <font class="charliteral">'â'</font>;
+00084 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"auml"</font>, token, 4)) *to++ = <font class="charliteral">'ä'</font>;
+00085 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"atilde"</font>, token, 6)) *to++ = <font class="charliteral">'ã'</font>;
+00086 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aring"</font>, token, 5)) *to++ = <font class="charliteral">'å'</font>;
+00087 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Eacute"</font>, token, 6)) *to++ = <font class="charliteral">'É'</font>;
+00088 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Egrave"</font>, token, 6)) *to++ = <font class="charliteral">'È'</font>;
+00089 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ecirc"</font>, token, 5)) *to++ = <font class="charliteral">'Ê'</font>;
+00090 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Euml"</font>, token, 4)) *to++ = <font class="charliteral">'Ë'</font>;
+00091 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"eacute"</font>, token, 6)) *to++ = <font class="charliteral">'é'</font>;
+00092 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"egrave"</font>, token, 6)) *to++ = <font class="charliteral">'è'</font>;
+00093 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ecirc"</font>, token, 5)) *to++ = <font class="charliteral">'ê'</font>;
+00094 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"euml"</font>, token, 4)) *to++ = <font class="charliteral">'ë'</font>;
+00095 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Iacute"</font>, token, 6)) *to++ = <font class="charliteral">'Í'</font>;
+00096 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Igrave"</font>, token, 6)) *to++ = <font class="charliteral">'Ì'</font>;
+00097 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Icirc"</font>, token, 5)) *to++ = <font class="charliteral">'Î'</font>;
+00098 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Iuml"</font>, token, 4)) *to++ = <font class="charliteral">'Ï'</font>;
+00099 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iacute"</font>, token, 6)) *to++ = <font class="charliteral">'í'</font>;
+00100 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"igrave"</font>, token, 6)) *to++ = <font class="charliteral">'ì'</font>;
+00101 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"icirc"</font>, token, 5)) *to++ = <font class="charliteral">'î'</font>;
+00102 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iuml"</font>, token, 4)) *to++ = <font class="charliteral">'ï'</font>;
+00103 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Oacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ó'</font>;
+00104 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ograve"</font>, token, 6)) *to++ = <font class="charliteral">'Ò'</font>;
+00105 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ocirc"</font>, token, 5)) *to++ = <font class="charliteral">'Ô'</font>;
+00106 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ouml"</font>, token, 4)) *to++ = <font class="charliteral">'Ö'</font>;
+00107 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Otilde"</font>, token, 6)) *to++ = <font class="charliteral">'Õ'</font>;
+00108 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"oacute"</font>, token, 6)) *to++ = <font class="charliteral">'ó'</font>;
+00109 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ograve"</font>, token, 6)) *to++ = <font class="charliteral">'ò'</font>;
+00110 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ocirc"</font>, token, 5)) *to++ = <font class="charliteral">'ô'</font>;
+00111 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ouml"</font>, token, 4)) *to++ = <font class="charliteral">'ö'</font>;
+00112 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"otilde"</font>, token, 6)) *to++ = <font class="charliteral">'õ'</font>;
+00113 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Uacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ú'</font>;
+00114 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ugrave"</font>, token, 6)) *to++ = <font class="charliteral">'Ù'</font>;
+00115 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ucirc"</font>, token, 5)) *to++ = <font class="charliteral">'Û'</font>;
+00116 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Uuml"</font>, token, 4)) *to++ = <font class="charliteral">'Ü'</font>;
+00117 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uacute"</font>, token, 6)) *to++ = <font class="charliteral">'ú'</font>;
+00118 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ugrave"</font>, token, 6)) *to++ = <font class="charliteral">'ù'</font>;
+00119 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ucirc"</font>, token, 5)) *to++ = <font class="charliteral">'û'</font>;
+00120 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uuml"</font>, token, 4)) *to++ = <font class="charliteral">'ü'</font>;
+00121 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Yacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ý'</font>;
+00122 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yacute"</font>, token, 6)) *to++ = <font class="charliteral">'ý'</font>;
+00123 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yuml"</font>, token, 4)) *to++ = <font class="charliteral">'ÿ'</font>;
+00124
+00125 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"deg"</font>, token, 3)) *to++ = <font class="charliteral">'°'</font>;
+00126 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"plusmn"</font>, token, 6)) *to++ = <font class="charliteral">'±'</font>;
+00127 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup2"</font>, token, 4)) *to++ = <font class="charliteral">'²'</font>;
+00128 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup3"</font>, token, 4)) *to++ = <font class="charliteral">'³'</font>;
+00129 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup1"</font>, token, 4)) *to++ = <font class="charliteral">'¹'</font>;
+00130 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"nbsp"</font>, token, 4)) *to++ = <font class="charliteral">'º'</font>;
+00131 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"pound"</font>, token, 5)) *to++ = <font class="charliteral">'£'</font>;
+00132 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"cent"</font>, token, 4)) *to++ = <font class="charliteral">'¢'</font>;
+00133 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac14"</font>, token, 6)) *to++ = <font class="charliteral">'¼'</font>;
+00134 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac12"</font>, token, 6)) *to++ = <font class="charliteral">'½'</font>;
+00135 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac34"</font>, token, 6)) *to++ = <font class="charliteral">'¾'</font>;
+00136 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iquest"</font>, token, 6)) *to++ = <font class="charliteral">'¿'</font>;
+00137 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iexcl"</font>, token, 5)) *to++ = <font class="charliteral">'¡'</font>;
+00138 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ETH"</font>, token, 3)) *to++ = <font class="charliteral">'Ð'</font>;
+00139 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"eth"</font>, token, 3)) *to++ = <font class="charliteral">'ð'</font>;
+00140 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"THORN"</font>, token, 5)) *to++ = <font class="charliteral">'Þ'</font>;
+00141 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"thorn"</font>, token, 5)) *to++ = <font class="charliteral">'þ'</font>;
+00142 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"AElig"</font>, token, 5)) *to++ = <font class="charliteral">'Æ'</font>;
+00143 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aelig"</font>, token, 5)) *to++ = <font class="charliteral">'æ'</font>;
+00144 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Oslash"</font>, token, 6)) *to++ = <font class="charliteral">'Ø'</font>;
+00145 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"curren"</font>, token, 6)) *to++ = <font class="charliteral">'¤'</font>;
+00146 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ccedil"</font>, token, 6)) *to++ = <font class="charliteral">'Ç'</font>;
+00147 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ccedil"</font>, token, 6)) *to++ = <font class="charliteral">'ç'</font>;
+00148 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"szlig"</font>, token, 5)) *to++ = <font class="charliteral">'ß'</font>;
+00149 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ntilde"</font>, token, 6)) *to++ = <font class="charliteral">'Ñ'</font>;
+00150 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ntilde"</font>, token, 6)) *to++ = <font class="charliteral">'ñ'</font>;
+00151 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yen"</font>, token, 3)) *to++ = <font class="charliteral">'¥'</font>;
+00152 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"not"</font>, token, 3)) *to++ = <font class="charliteral">'¬'</font>;
+00153 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ordf"</font>, token, 4)) *to++ = <font class="charliteral">'ª'</font>;
+00154 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uml"</font>, token, 3)) *to++ = <font class="charliteral">'¨'</font>;
+00155 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"shy"</font>, token, 3)) *to++ = <font class="charliteral">'­'</font>;
+00156 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"macr"</font>, token, 4)) *to++ = <font class="charliteral">'¯'</font>;
+00157 <font class="keywordflow">continue</font>;
+00158
+00159 }
+00160 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font> &amp;&amp; !ampersand)
+00161 {
+00162 intoken = <font class="keyword">false</font>;
+00163 <font class="comment">// process desired tokens</font>
+00164 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\"G"</font>, 27)) {
+00165 *to++ = <font class="charliteral">'&lt;'</font>;
+00166 <font class="keywordflow">for</font> (i = 28; token[i] != <font class="charliteral">'\"'</font>; i++)
+00167 *to++ = token[i];
+00168 *to++ = <font class="charliteral">'&gt;'</font>;
+00169 <font class="keywordflow">continue</font>;
+00170 }
+00171 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\"H"</font>, 27)) {
+00172 *to++ = <font class="charliteral">'&lt;'</font>;
+00173 <font class="keywordflow">for</font> (i = 28; token[i] != <font class="charliteral">'\"'</font>; i++)
+00174 *to++ = token[i];
+00175 *to++ = <font class="charliteral">'&gt;'</font>;
+00176 <font class="keywordflow">continue</font>;
+00177 }
+00178 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00179 *to++ = <font class="charliteral">'#'</font>;
+00180 <font class="keywordflow">continue</font>;
+00181 }
+00182 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/scripRef"</font>, 9)) {
+00183 *to++ = <font class="charliteral">' '</font>;
+00184 <font class="keywordflow">continue</font>;
+00185 }
+00186 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"note "</font>, 5)) {
+00187 *to++ = <font class="charliteral">'{'</font>;
+00188 <font class="keywordflow">continue</font>;
+00189 }
+00190 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/note"</font>, 5)) {
+00191 *to++ = <font class="charliteral">'}'</font>;
+00192 <font class="keywordflow">continue</font>;
+00193 }
+00194 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"font"</font>, 4)) {
+00195 *to++ = <font class="charliteral">'\\'</font>;
+00196 *to++ = <font class="charliteral">'\\'</font>;
+00197 <font class="keywordflow">continue</font>;
+00198 }
+00199 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"/font"</font>, 5)) {
+00200 *to++ = <font class="charliteral">'\\'</font>;
+00201 *to++ = <font class="charliteral">'\\'</font>;
+00202 <font class="keywordflow">continue</font>;
+00203 }
+00204 <font class="keywordflow">else</font> <font class="keywordflow">switch</font>(*token) {
+00205 <font class="keywordflow">case</font> <font class="charliteral">'I'</font>: <font class="comment">// font tags</font>
+00206 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>:
+00207 *to++ = <font class="charliteral">'\\'</font>;
+00208 *to++ = <font class="charliteral">'@'</font>;
+00209 <font class="keywordflow">continue</font>;
+00210 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">// bold start</font>
+00211 <font class="keywordflow">case</font> <font class="charliteral">'b'</font>:
+00212 *to++ = <font class="charliteral">'\\'</font>;
+00213 *to++ = <font class="charliteral">'$'</font>;
+00214 <font class="keywordflow">continue</font>;
+00215 <font class="keywordflow">case</font> <font class="charliteral">'/'</font>:
+00216 <font class="keywordflow">switch</font>(token[1]) {
+00217 <font class="keywordflow">case</font> <font class="charliteral">'I'</font>:
+00218 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>: <font class="comment">// italic end</font>
+00219 *to++ = <font class="charliteral">'\\'</font>;
+00220 *to++ = <font class="charliteral">'@'</font>;
+00221 <font class="keywordflow">continue</font>;
+00222 <font class="keywordflow">case</font> <font class="charliteral">'B'</font>: <font class="comment">// bold start</font>
+00223 <font class="keywordflow">case</font> <font class="charliteral">'b'</font>:
+00224 *to++ = <font class="charliteral">'\\'</font>;
+00225 *to++ = <font class="charliteral">'$'</font>;
+00226 <font class="keywordflow">continue</font>;
+00227 }
+00228 }
+00229 <font class="keywordflow">continue</font>;
+00230 }
+00231 <font class="keywordflow">if</font> (intoken) {
+00232 <font class="keywordflow">if</font> (tokpos &lt; 2047)
+00233 token[tokpos++] = *from;
+00234 }
+00235 <font class="keywordflow">else</font> *to++ = *from;
+00236 }
+00237 *to++ = 0;
+00238 *to = 0;
+00239 <font class="keywordflow">return</font> 0;
+00240 }
+00241
+00242
+00243
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlolb_8h-source.html b/doc/api-documentation/html/thmlolb_8h-source.html
new file mode 100644
index 0000000..0561fb6
--- /dev/null
+++ b/doc/api-documentation/html/thmlolb_8h-source.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlolb.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlolb.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlolb.h</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLOLB_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLOLB_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_o_l_b.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_o_l_b.html">ThMLOLB</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keyword">public</font>:
+00033 <a class="code" href="class_th_m_l_o_l_b.html">ThMLOLB</a> ();
+00034 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen = -1);
+00035 };
+00036
+00037 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlosis_8cpp-source.html b/doc/api-documentation/html/thmlosis_8cpp-source.html
new file mode 100644
index 0000000..1fdebd0
--- /dev/null
+++ b/doc/api-documentation/html/thmlosis_8cpp-source.html
@@ -0,0 +1,344 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlosis.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlosis.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlstrongs - SWFilter decendant to hide or show strongs number</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;thmlosis.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00013 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00014 <font class="preprocessor">#ifndef __GNUC__</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00016 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00017 <font class="preprocessor">#endif</font>
+00018 <font class="preprocessor"></font>
+00019
+00020 ThMLOSIS::ThMLOSIS() {
+00021 }
+00022
+00023
+00024 ThMLOSIS::~ThMLOSIS() {
+00025 }
+00026
+00027
+00028 <font class="keywordtype">char</font> ThMLOSIS::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module) {
+00029
+00030 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00031 <font class="keywordtype">int</font> tokpos = 0;
+00032 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00033 <font class="keywordtype">int</font> len;
+00034 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00035 <font class="keywordtype">int</font> word = 1;
+00036 <font class="keywordtype">char</font> val[128];
+00037 <font class="keywordtype">char</font> buf[128];
+00038 <font class="keywordtype">char</font> wordstr[5];
+00039 <font class="keywordtype">char</font> *valto;
+00040 <font class="keywordtype">char</font> *ch;
+00041 <font class="keywordtype">char</font> *textStart, *textEnd;
+00042 <font class="keywordtype">char</font> *wordStart, *wordEnd;
+00043 <font class="keywordtype">bool</font> newText = <font class="keyword">false</font>;
+00044 <font class="keywordtype">bool</font> newWord = <font class="keyword">false</font>;
+00045 string tmp;
+00046 <font class="keywordtype">bool</font> suspendTextPassThru = <font class="keyword">false</font>;
+00047 <font class="keywordtype">bool</font> keepToken = <font class="keyword">false</font>;
+00048
+00049 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00050 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00051 memmove(&amp;text[maxlen - len], text, len);
+00052 from = &amp;text[maxlen - len];
+00053 }
+00054 <font class="keywordflow">else</font> from = text;
+00055
+00056 textStart = from;
+00057 wordStart = text;
+00058
+00059 <font class="comment">// -------------------------------</font>
+00060
+00061 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00062 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00063 intoken = <font class="keyword">true</font>;
+00064 tokpos = 0;
+00065 token[0] = 0;
+00066 token[1] = 0;
+00067 token[2] = 0;
+00068 textEnd = from-1;
+00069 wordEnd = to;
+00070 <font class="keywordflow">continue</font>;
+00071 }
+00072 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00073 intoken = <font class="keyword">false</font>;
+00074 keepToken = <font class="keyword">false</font>;
+00075 suspendTextPassThru = <font class="keyword">false</font>;
+00076 newWord = <font class="keyword">true</font>;
+00077
+00078
+00079 <font class="keywordflow">while</font> (wordStart &lt; (text+maxlen)) {
+00080 <font class="comment">// if (strchr(" ,;.?!()'\"", *wordStart))</font>
+00081 <font class="keywordflow">if</font> (strchr(<font class="stringliteral">";,: .?!()'\""</font>, *wordStart))
+00082 wordStart++;
+00083 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00084 }
+00085 <font class="keywordflow">while</font> (wordEnd &gt; wordStart) {
+00086 <font class="keywordflow">if</font> (strchr(<font class="stringliteral">" ,;:.?!()'\""</font>, *wordEnd))
+00087 wordEnd--;
+00088 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00089 }
+00090
+00091 <font class="comment">// Scripture Reference</font>
+00092 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00093 <font class="comment">// pushString(buf, "&lt;reference work=\"Bible.KJV\" reference=\"");</font>
+00094 suspendTextPassThru = <font class="keyword">true</font>;
+00095 newText = <font class="keyword">true</font>;
+00096 }
+00097 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/scripRef"</font>, 9)) {
+00098 tmp = <font class="stringliteral">""</font>;
+00099 tmp.append(textStart, (<font class="keywordtype">int</font>)(textEnd - textStart)+1);
+00100 pushString(&amp;to, convertToOSIS(tmp.c_str(), key));
+00101 suspendTextPassThru = <font class="keyword">false</font>;
+00102 }
+00103
+00104 <font class="comment">// Footnote</font>
+00105 <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"note"</font>)) {
+00106 <font class="comment">// pushString(buf, "&lt;reference work=\"Bible.KJV\" reference=\"");</font>
+00107 suspendTextPassThru = <font class="keyword">true</font>;
+00108 newText = <font class="keyword">true</font>;
+00109 }
+00110 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(token, <font class="stringliteral">"/note"</font>)) {
+00111 tmp = <font class="stringliteral">"&lt;note type=\"x-StudyNote\"&gt;&lt;notePart type=\"x-MainText\"&gt;"</font>;
+00112 tmp.append(textStart, (<font class="keywordtype">int</font>)(textEnd - textStart)+1);
+00113 tmp += <font class="stringliteral">"&lt;/notePart&gt;&lt;/note&gt;"</font>;
+00114 pushString(&amp;to, tmp.c_str());
+00115 suspendTextPassThru = <font class="keyword">false</font>;
+00116 }
+00117
+00118 <font class="comment">// Figure</font>
+00119 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"img "</font>, 4)) {
+00120 <font class="keyword">const</font> <font class="keywordtype">char</font> *src = strstr(token, <font class="stringliteral">"src"</font>);
+00121 <font class="keywordflow">if</font> (!src) <font class="comment">// assert we have a src attribute</font>
+00122 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00123
+00124 pushString(&amp;to, <font class="stringliteral">"&lt;figure src=\""</font>);
+00125 <font class="keyword">const</font> <font class="keywordtype">char</font> *c;
+00126 <font class="keywordflow">for</font> (c = src;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++);
+00127
+00128 <font class="comment">/* uncomment for SWORD absolute path logic</font>
+00129 <font class="comment"> if (*(c+1) == '/') {</font>
+00130 <font class="comment"> pushString(buf, "file:");</font>
+00131 <font class="comment"> pushString(buf, module-&gt;getConfigEntry("AbsoluteDataPath"));</font>
+00132 <font class="comment"> if (*((*buf)-1) == '/')</font>
+00133 <font class="comment"> c++; // skip '/'</font>
+00134 <font class="comment"> }</font>
+00135 <font class="comment"> end of uncomment for asolute path logic */</font>
+00136
+00137 <font class="keywordflow">for</font> (c++;((*c) &amp;&amp; (*c != <font class="charliteral">'"'</font>)); c++)
+00138 *to++ = *c;
+00139
+00140 pushString(&amp;to, <font class="stringliteral">"\" /&gt;"</font>);
+00141 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00142 }
+00143
+00144 <font class="comment">// Strongs numbers</font>
+00145 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"sync type=\"Strongs\" "</font>, 20)) { <font class="comment">// Strongs</font>
+00146 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a64">isProcessEntryAttributes</a>()) {
+00147 valto = val;
+00148 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 27; token[i] != <font class="charliteral">'\"'</font> &amp;&amp; i &lt; 150; i++)
+00149 *valto++ = token[i];
+00150 *valto = 0;
+00151 <font class="keywordflow">if</font> (atoi((!isdigit(*val))?val+1:val) &lt; 5627) {
+00152 <font class="comment">// normal strongs number</font>
+00153 strstrip(val);
+00154 sprintf(buf, <font class="stringliteral">"&lt;w lemma=\"x-Strong:%s\"&gt;"</font>, val);
+00155 memmove(wordStart+strlen(buf), wordStart, (to-wordStart)+1);
+00156 memcpy(wordStart, buf, strlen(buf));
+00157 to+=strlen(buf);
+00158 pushString(&amp;to, <font class="stringliteral">"&lt;/w&gt;"</font>);
+00159 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Strongs"</font>] = val;
+00160 <font class="comment">// tmp = "";</font>
+00161 <font class="comment">// tmp.append(textStart, (int)(wordEnd - wordStart));</font>
+00162 <font class="comment">// module-&gt;getEntryAttributes()["Word"][wordstr]["Text"] = tmp;</font>
+00163 }
+00164 <font class="keywordflow">else</font> {
+00165 <font class="comment">// verb morph</font>
+00166 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
+00167 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>] = val;
+00168 }
+00169 }
+00170 }
+00171
+00172 <font class="comment">// Morphology</font>
+00173 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\""</font>, 17)) {
+00174 <font class="keywordflow">for</font> (ch = token+17; *ch; ch++) {
+00175 <font class="keywordflow">if</font> (!strncmp(ch, <font class="stringliteral">"class=\""</font>, 7)) {
+00176 valto = val;
+00177 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 7; ch[i] != <font class="charliteral">'\"'</font> &amp;&amp; i &lt; 127; i++)
+00178 *valto++ = ch[i];
+00179 *valto = 0;
+00180 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
+00181 strstrip(val);
+00182 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"MorphClass"</font>] = val;
+00183 }
+00184 <font class="keywordflow">if</font> (!strncmp(ch, <font class="stringliteral">"value=\""</font>, 7)) {
+00185 valto = val;
+00186 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 7; ch[i] != <font class="charliteral">'\"'</font> &amp;&amp; i &lt; 127; i++)
+00187 *valto++ = ch[i];
+00188 *valto = 0;
+00189 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
+00190 strstrip(val);
+00191 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>] = val;
+00192 }
+00193 }
+00194 <font class="keywordflow">if</font> (!strncmp(wordStart, <font class="stringliteral">"&lt;w "</font>, 3)) {
+00195
+00196 <font class="keyword">const</font> <font class="keywordtype">char</font> *cls = <font class="stringliteral">"Unknown"</font>, *morph;
+00197
+00198 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>].size() &gt; 0) {
+00199 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"MorphClass"</font>].size() &gt; 0)
+00200 cls = module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"MorphClass"</font>].c_str();
+00201 morph = module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>].c_str();
+00202
+00203 sprintf(buf, <font class="stringliteral">"morph=\"x-%s:%s\" "</font>, cls, morph);
+00204 memmove(wordStart+3+strlen(buf), wordStart+3, (to-wordStart)+1);
+00205 memcpy(wordStart+3, buf, strlen(buf));
+00206 to+=strlen(buf);
+00207 }
+00208 }
+00209 }
+00210
+00211 <font class="keywordflow">if</font> (!keepToken) { <font class="comment">// if we don't want strongs</font>
+00212 <font class="keywordflow">if</font> (strchr(<font class="stringliteral">" ,:;.?!()'\""</font>, from[1])) {
+00213 <font class="keywordflow">if</font> (lastspace)
+00214 to--;
+00215 }
+00216 <font class="keywordflow">if</font> (newText) {textStart = from+1; newText = <font class="keyword">false</font>; }
+00217 <font class="comment">// if (newWord) {wordStart = to; newWord = false; }</font>
+00218 <font class="keywordflow">continue</font>;
+00219 }
+00220 <font class="comment">// if not a strongs token, keep token in text</font>
+00221 *to++ = <font class="charliteral">'&lt;'</font>;
+00222 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00223 *to++ = *tok;
+00224 *to++ = <font class="charliteral">'&gt;'</font>;
+00225 <font class="keywordflow">if</font> (newText) {textStart = to; newWord = <font class="keyword">false</font>; }
+00226 <font class="comment">// if (newWord) {wordStart = to; newWord = false; }</font>
+00227 <font class="keywordflow">continue</font>;
+00228 }
+00229 <font class="keywordflow">if</font> (intoken) {
+00230 <font class="keywordflow">if</font> ((tokpos &lt; 2045) &amp;&amp; ((*from != 10)&amp;&amp;(*from != 13))) {
+00231 token[tokpos++] = *from;
+00232 token[tokpos+2] = 0;
+00233 }
+00234 }
+00235 <font class="keywordflow">else</font> {
+00236 <font class="keywordflow">if</font> (newWord &amp;&amp; (*from != <font class="charliteral">' '</font>)) {wordStart = to; newWord = <font class="keyword">false</font>; memset(to, 0, 10); }
+00237 <font class="keywordflow">if</font> (!suspendTextPassThru) {
+00238 *to++ = *from;
+00239 lastspace = (*from == <font class="charliteral">' '</font>);
+00240 }
+00241 }
+00242 }
+00243
+00244 <a class="code" href="class_verse_key.html">VerseKey</a> *vkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00245 <font class="keywordflow">if</font> (vkey) {
+00246 <font class="keywordtype">char</font> ref[254];
+00247 <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>())
+00248 sprintf(ref, <font class="stringliteral">"&lt;verseStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00249 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>())
+00250 sprintf(ref, <font class="stringliteral">"&lt;chapterStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00251 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>())
+00252 sprintf(ref, <font class="stringliteral">"&lt;bookStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00253 <font class="keywordflow">else</font> *ref = 0;
+00254 <font class="keywordflow">if</font> (*ref) {
+00255 memmove(text+strlen(ref), text, maxlen-strlen(ref)-1);
+00256 memcpy(text, ref, strlen(ref));
+00257 to+=strlen(ref);
+00258 <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>()) {
+00259 <a class="code" href="class_verse_key.html">VerseKey</a> tmp;
+00260 tmp = *vkey;
+00261 tmp.<a class="code" href="class_verse_key.html#a31">AutoNormalize</a>(0);
+00262 tmp.<a class="code" href="class_verse_key.html#a32">Headings</a>(1);
+00263 sprintf(ref, <font class="stringliteral">"&lt;verseEnd ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00264 pushString(&amp;to, ref);
+00265 tmp = MAXVERSE;
+00266 <font class="keywordflow">if</font> (*vkey == tmp) {
+00267 tmp.<a class="code" href="class_verse_key.html#a25">Verse</a>(0);
+00268 sprintf(ref, <font class="stringliteral">"&lt;chapterEnd ref=\"%s\" /&gt;"</font>, tmp.<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00269 pushString(&amp;to, ref);
+00270 tmp = MAXCHAPTER;
+00271 tmp = MAXVERSE;
+00272 <font class="keywordflow">if</font> (*vkey == tmp) {
+00273 tmp.<a class="code" href="class_verse_key.html#a24">Chapter</a>(0);
+00274 tmp.<a class="code" href="class_verse_key.html#a25">Verse</a>(0);
+00275 sprintf(ref, <font class="stringliteral">"&lt;bookEnd ref=\"%s\" /&gt;"</font>, tmp.<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00276 pushString(&amp;to, ref);
+00277 }
+00278 }
+00279 }
+00280
+00281 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (vkey-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>())
+00282 sprintf(ref, <font class="stringliteral">"&lt;chapterStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00283 <font class="keywordflow">else</font> sprintf(ref, <font class="stringliteral">"&lt;bookStart ref=\"%s\" /&gt;"</font>, vkey-&gt;<a class="code" href="class_verse_key.html#a36">getOSISRef</a>());
+00284 }
+00285 }
+00286 *to++ = 0;
+00287 *to = 0;
+00288 <font class="keywordflow">return</font> 0;
+00289 }
+00290
+00291
+00292 <font class="keywordtype">void</font> ThMLOSIS::pushString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...) {
+00293 va_list argptr;
+00294
+00295 va_start(argptr, format);
+00296 *buf += vsprintf(*buf, format, argptr);
+00297 va_end(argptr);
+00298
+00299 <font class="comment">// *buf += strlen(*buf);</font>
+00300 }
+00301
+00302
+00303 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLOSIS::convertToOSIS(<font class="keyword">const</font> <font class="keywordtype">char</font> *inRef, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key) {
+00304 <font class="keyword">static</font> string outRef;
+00305
+00306 outRef = <font class="stringliteral">""</font>;
+00307
+00308 <a class="code" href="class_verse_key.html">VerseKey</a> defLanguage;
+00309 <a class="code" href="class_list_key.html">ListKey</a> verses = defLanguage.<a class="code" href="class_verse_key.html#a37">ParseVerseList</a>(inRef, (*key), <font class="keyword">true</font>);
+00310 <font class="keyword">const</font> <font class="keywordtype">char</font> *startFrag = inRef;
+00311 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; verses.<a class="code" href="class_list_key.html#a5">Count</a>(); i++) {
+00312 <a class="code" href="class_verse_key.html">VerseKey</a> *element = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i));
+00313 <font class="keywordtype">char</font> buf[5120];
+00314 <font class="keywordtype">char</font> frag[800];
+00315 <font class="keywordflow">if</font> (element) {
+00316 memmove(frag, startFrag, ((<font class="keyword">const</font> <font class="keywordtype">char</font> *)element-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1);
+00317 frag[((<font class="keyword">const</font> <font class="keywordtype">char</font> *)element-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1] = 0;
+00318 startFrag = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)element-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> + 1;
+00319 sprintf(buf, <font class="stringliteral">"&lt;reference refStart=\"KJV:%s\" refEnd=\"%s\"&gt;%s&lt;/reference&gt;"</font>, element-&gt;<a class="code" href="class_verse_key.html#a5">LowerBound</a>().<a class="code" href="class_verse_key.html#a36">getOSISRef</a>(), element-&gt;<a class="code" href="class_verse_key.html#a6">UpperBound</a>().<a class="code" href="class_verse_key.html#a36">getOSISRef</a>(), frag);
+00320 }
+00321 <font class="keywordflow">else</font> {
+00322 memmove(frag, startFrag, ((<font class="keyword">const</font> <font class="keywordtype">char</font> *)verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1);
+00323 frag[((<font class="keyword">const</font> <font class="keywordtype">char</font> *)verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> - startFrag) + 1] = 0;
+00324 startFrag = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> + 1;
+00325 sprintf(buf, <font class="stringliteral">"&lt;reference refStart=\"KJV:%s\"&gt;%s&lt;/reference&gt;"</font>, <a class="code" href="class_verse_key.html">VerseKey</a>(*verses.<a class="code" href="class_list_key.html#a8">GetElement</a>(i)).getOSISRef(), frag);
+00326 }
+00327 outRef+=buf;
+00328 }
+00329 <font class="keywordflow">return</font> outRef.c_str();
+00330 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlosis_8h-source.html b/doc/api-documentation/html/thmlosis_8h-source.html
new file mode 100644
index 0000000..863d48e
--- /dev/null
+++ b/doc/api-documentation/html/thmlosis_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlosis.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlosis.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlosis.h - description</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 2001-09-03</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#ifndef THMLOSIS_H</font>
+00018 <font class="preprocessor"></font><font class="preprocessor">#define THMLOSIS_H</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00022
+<a name="l00025"></a><a class="code" href="class_th_m_l_o_s_i_s.html">00025</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a> : <font class="keyword">public</font> SWFilter {
+00026 <font class="keyword">protected</font>:
+00027 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *convertToOSIS(<font class="keyword">const</font> <font class="keywordtype">char</font> *, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key);
+00028 <font class="keywordtype">void</font> pushString(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...);
+00029 <font class="keyword">public</font>:
+00030 <a class="code" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>();
+00031 <font class="keyword">virtual</font> ~<a class="code" href="class_th_m_l_o_s_i_s.html">ThMLOSIS</a>();
+00032 <font class="keywordtype">char</font> ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00033 };
+00034
+00035 <font class="preprocessor">#endif </font><font class="comment">/* THMLOSIS_H */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlplain_8cpp-source.html b/doc/api-documentation/html/thmlplain_8cpp-source.html
new file mode 100644
index 0000000..a7b4dbe
--- /dev/null
+++ b/doc/api-documentation/html/thmlplain_8cpp-source.html
@@ -0,0 +1,215 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlplain.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlplain.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlplain - SWFilter decendant to strip out all ThML tags or convert to</font>
+00004 <font class="comment"> * ASCII rendered symbols.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;thmlplain.h&gt;</font>
+00011
+00012
+00013 ThMLPlain::ThMLPlain() {
+00014 }
+00015
+00016
+00017 <font class="keywordtype">char</font> ThMLPlain::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen)
+00018 {
+00019 <font class="keywordtype">char</font> *to, *from, token[2048];
+00020 <font class="keywordtype">int</font> tokpos = 0;
+00021 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00022 <font class="keywordtype">int</font> len;
+00023 <font class="keywordtype">bool</font> ampersand = <font class="keyword">false</font>;
+00024
+00025 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00026 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00027 memmove(&amp;text[maxlen - len], text, len);
+00028 from = &amp;text[maxlen - len];
+00029 }
+00030 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00031
+00032 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00033 <font class="keywordflow">if</font> (*from == 10 || *from == 13)
+00034 from++;
+00035 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00036 intoken = <font class="keyword">true</font>;
+00037 tokpos = 0;
+00038 token[0] = 0;
+00039 token[1] = 0;
+00040 token[2] = 0;
+00041 ampersand = <font class="keyword">false</font>;
+00042 <font class="keywordflow">continue</font>;
+00043 }
+00044 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == <font class="charliteral">'&amp;'</font>) {
+00045 intoken = <font class="keyword">true</font>;
+00046 tokpos = 0;
+00047 token[0] = 0;
+00048 token[1] = 0;
+00049 token[2] = 0;
+00050 ampersand = <font class="keyword">true</font>;
+00051 <font class="keywordflow">continue</font>;
+00052 }
+00053 <font class="keywordflow">if</font> (*from == <font class="charliteral">';'</font> &amp;&amp; ampersand) {
+00054 intoken = <font class="keyword">false</font>;
+00055
+00056 <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"nbsp"</font>, token, 4)) *to++ = <font class="charliteral">' '</font>;
+00057 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"quot"</font>, token, 4)) *to++ = <font class="charliteral">'"'</font>;
+00058 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"amp"</font>, token, 3)) *to++ = <font class="charliteral">'&amp;'</font>;
+00059 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"lt"</font>, token, 2)) *to++ = <font class="charliteral">'&lt;'</font>;
+00060 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"gt"</font>, token, 2)) *to++ = <font class="charliteral">'&gt;'</font>;
+00061 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"brvbar"</font>, token, 6)) *to++ = <font class="charliteral">'|'</font>;
+00062 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sect"</font>, token, 4)) *to++ = <font class="charliteral">'§'</font>;
+00063 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"copy"</font>, token, 4)) *to++ = <font class="charliteral">'©'</font>;
+00064 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"laquo"</font>, token, 5)) *to++ = <font class="charliteral">'«'</font>;
+00065 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"reg"</font>, token, 3)) *to++ = <font class="charliteral">'®'</font>;
+00066 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"acute"</font>, token, 5)) *to++ = <font class="charliteral">'´'</font>;
+00067 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"para"</font>, token, 4)) *to++ = <font class="charliteral">'¶'</font>;
+00068 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"raquo"</font>, token, 5)) *to++ = <font class="charliteral">'»'</font>;
+00069
+00070 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Aacute"</font>, token, 6)) *to++ = <font class="charliteral">'Á'</font>;
+00071 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Agrave"</font>, token, 6)) *to++ = <font class="charliteral">'À'</font>;
+00072 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Acirc"</font>, token, 5)) *to++ = <font class="charliteral">'Â'</font>;
+00073 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Auml"</font>, token, 4)) *to++ = <font class="charliteral">'Ä'</font>;
+00074 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Atilde"</font>, token, 6)) *to++ = <font class="charliteral">'Ã'</font>;
+00075 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Aring"</font>, token, 5)) *to++ = <font class="charliteral">'Å'</font>;
+00076 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aacute"</font>, token, 6)) *to++ = <font class="charliteral">'á'</font>;
+00077 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"agrave"</font>, token, 6)) *to++ = <font class="charliteral">'à'</font>;
+00078 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"acirc"</font>, token, 5)) *to++ = <font class="charliteral">'â'</font>;
+00079 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"auml"</font>, token, 4)) *to++ = <font class="charliteral">'ä'</font>;
+00080 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"atilde"</font>, token, 6)) *to++ = <font class="charliteral">'ã'</font>;
+00081 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aring"</font>, token, 5)) *to++ = <font class="charliteral">'å'</font>;
+00082 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Eacute"</font>, token, 6)) *to++ = <font class="charliteral">'É'</font>;
+00083 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Egrave"</font>, token, 6)) *to++ = <font class="charliteral">'È'</font>;
+00084 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ecirc"</font>, token, 5)) *to++ = <font class="charliteral">'Ê'</font>;
+00085 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Euml"</font>, token, 4)) *to++ = <font class="charliteral">'Ë'</font>;
+00086 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"eacute"</font>, token, 6)) *to++ = <font class="charliteral">'é'</font>;
+00087 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"egrave"</font>, token, 6)) *to++ = <font class="charliteral">'è'</font>;
+00088 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ecirc"</font>, token, 5)) *to++ = <font class="charliteral">'ê'</font>;
+00089 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"euml"</font>, token, 4)) *to++ = <font class="charliteral">'ë'</font>;
+00090 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Iacute"</font>, token, 6)) *to++ = <font class="charliteral">'Í'</font>;
+00091 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Igrave"</font>, token, 6)) *to++ = <font class="charliteral">'Ì'</font>;
+00092 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Icirc"</font>, token, 5)) *to++ = <font class="charliteral">'Î'</font>;
+00093 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Iuml"</font>, token, 4)) *to++ = <font class="charliteral">'Ï'</font>;
+00094 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iacute"</font>, token, 6)) *to++ = <font class="charliteral">'í'</font>;
+00095 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"igrave"</font>, token, 6)) *to++ = <font class="charliteral">'ì'</font>;
+00096 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"icirc"</font>, token, 5)) *to++ = <font class="charliteral">'î'</font>;
+00097 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iuml"</font>, token, 4)) *to++ = <font class="charliteral">'ï'</font>;
+00098 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Oacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ó'</font>;
+00099 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ograve"</font>, token, 6)) *to++ = <font class="charliteral">'Ò'</font>;
+00100 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ocirc"</font>, token, 5)) *to++ = <font class="charliteral">'Ô'</font>;
+00101 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ouml"</font>, token, 4)) *to++ = <font class="charliteral">'Ö'</font>;
+00102 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Otilde"</font>, token, 6)) *to++ = <font class="charliteral">'Õ'</font>;
+00103 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"oacute"</font>, token, 6)) *to++ = <font class="charliteral">'ó'</font>;
+00104 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ograve"</font>, token, 6)) *to++ = <font class="charliteral">'ò'</font>;
+00105 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ocirc"</font>, token, 5)) *to++ = <font class="charliteral">'ô'</font>;
+00106 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ouml"</font>, token, 4)) *to++ = <font class="charliteral">'ö'</font>;
+00107 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"otilde"</font>, token, 6)) *to++ = <font class="charliteral">'õ'</font>;
+00108 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Uacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ú'</font>;
+00109 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ugrave"</font>, token, 6)) *to++ = <font class="charliteral">'Ù'</font>;
+00110 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ucirc"</font>, token, 5)) *to++ = <font class="charliteral">'Û'</font>;
+00111 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Uuml"</font>, token, 4)) *to++ = <font class="charliteral">'Ü'</font>;
+00112 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uacute"</font>, token, 6)) *to++ = <font class="charliteral">'ú'</font>;
+00113 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ugrave"</font>, token, 6)) *to++ = <font class="charliteral">'ù'</font>;
+00114 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ucirc"</font>, token, 5)) *to++ = <font class="charliteral">'û'</font>;
+00115 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uuml"</font>, token, 4)) *to++ = <font class="charliteral">'ü'</font>;
+00116 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Yacute"</font>, token, 6)) *to++ = <font class="charliteral">'Ý'</font>;
+00117 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yacute"</font>, token, 6)) *to++ = <font class="charliteral">'ý'</font>;
+00118 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yuml"</font>, token, 4)) *to++ = <font class="charliteral">'ÿ'</font>;
+00119
+00120 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"deg"</font>, token, 3)) *to++ = <font class="charliteral">'°'</font>;
+00121 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"plusmn"</font>, token, 6)) *to++ = <font class="charliteral">'±'</font>;
+00122 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup2"</font>, token, 4)) *to++ = <font class="charliteral">'²'</font>;
+00123 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup3"</font>, token, 4)) *to++ = <font class="charliteral">'³'</font>;
+00124 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"sup1"</font>, token, 4)) *to++ = <font class="charliteral">'¹'</font>;
+00125 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"nbsp"</font>, token, 4)) *to++ = <font class="charliteral">'º'</font>;
+00126 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"pound"</font>, token, 5)) *to++ = <font class="charliteral">'£'</font>;
+00127 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"cent"</font>, token, 4)) *to++ = <font class="charliteral">'¢'</font>;
+00128 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac14"</font>, token, 6)) *to++ = <font class="charliteral">'¼'</font>;
+00129 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac12"</font>, token, 6)) *to++ = <font class="charliteral">'½'</font>;
+00130 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"frac34"</font>, token, 6)) *to++ = <font class="charliteral">'¾'</font>;
+00131 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iquest"</font>, token, 6)) *to++ = <font class="charliteral">'¿'</font>;
+00132 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"iexcl"</font>, token, 5)) *to++ = <font class="charliteral">'¡'</font>;
+00133 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ETH"</font>, token, 3)) *to++ = <font class="charliteral">'Ð'</font>;
+00134 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"eth"</font>, token, 3)) *to++ = <font class="charliteral">'ð'</font>;
+00135 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"THORN"</font>, token, 5)) *to++ = <font class="charliteral">'Þ'</font>;
+00136 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"thorn"</font>, token, 5)) *to++ = <font class="charliteral">'þ'</font>;
+00137 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"AElig"</font>, token, 5)) *to++ = <font class="charliteral">'Æ'</font>;
+00138 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"aelig"</font>, token, 5)) *to++ = <font class="charliteral">'æ'</font>;
+00139 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Oslash"</font>, token, 6)) *to++ = <font class="charliteral">'Ø'</font>;
+00140 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"curren"</font>, token, 6)) *to++ = <font class="charliteral">'¤'</font>;
+00141 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ccedil"</font>, token, 6)) *to++ = <font class="charliteral">'Ç'</font>;
+00142 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ccedil"</font>, token, 6)) *to++ = <font class="charliteral">'ç'</font>;
+00143 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"szlig"</font>, token, 5)) *to++ = <font class="charliteral">'ß'</font>;
+00144 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"Ntilde"</font>, token, 6)) *to++ = <font class="charliteral">'Ñ'</font>;
+00145 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ntilde"</font>, token, 6)) *to++ = <font class="charliteral">'ñ'</font>;
+00146 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"yen"</font>, token, 3)) *to++ = <font class="charliteral">'¥'</font>;
+00147 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"not"</font>, token, 3)) *to++ = <font class="charliteral">'¬'</font>;
+00148 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"ordf"</font>, token, 4)) *to++ = <font class="charliteral">'ª'</font>;
+00149 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"uml"</font>, token, 3)) *to++ = <font class="charliteral">'¨'</font>;
+00150 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"shy"</font>, token, 3)) *to++ = <font class="charliteral">'­'</font>;
+00151 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"macr"</font>, token, 4)) *to++ = <font class="charliteral">'¯'</font>;
+00152 <font class="keywordflow">continue</font>;
+00153
+00154 }
+00155 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font> &amp;&amp; !ampersand) {
+00156 intoken = <font class="keyword">false</font>;
+00157 <font class="comment">// process desired tokens</font>
+00158 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\""</font>, 27)) {
+00159 *to++ = <font class="charliteral">' '</font>;
+00160 *to++ = <font class="charliteral">'&lt;'</font>;
+00161 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 27; token[i] != <font class="charliteral">'\"'</font>; i++)
+00162 *to++ = token[i];
+00163 *to++ = <font class="charliteral">'&gt;'</font>;
+00164 <font class="keywordflow">continue</font>;
+00165 }
+00166 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\" value=\""</font>, 25)) {
+00167 *to++ = <font class="charliteral">' '</font>;
+00168 *to++ = <font class="charliteral">'('</font>;
+00169 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00170 *to++ = token[i];
+00171 *to++ = <font class="charliteral">')'</font>;
+00172 <font class="keywordflow">continue</font>;
+00173 }
+00174 <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"note"</font>, token, 4)) {
+00175 *to++ = <font class="charliteral">' '</font>;
+00176 *to++ = <font class="charliteral">'('</font>;
+00177 }
+00178 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"br"</font>, token, 2))
+00179 *to++ = <font class="charliteral">'\n'</font>;
+00180 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"/p"</font>, token, 2))
+00181 *to++ = <font class="charliteral">'\n'</font>;
+00182 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(<font class="stringliteral">"/note"</font>, token, 5)) {
+00183 *to++ = <font class="charliteral">')'</font>;
+00184 *to++ = <font class="charliteral">' '</font>;
+00185 }
+00186 <font class="keywordflow">continue</font>;
+00187 }
+00188 <font class="keywordflow">if</font> (intoken) {
+00189 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00190 token[tokpos++] = *from;
+00191 token[tokpos+2] = 0;
+00192 }
+00193 <font class="keywordflow">else</font> *to++ = *from;
+00194 }
+00195 *to++ = 0;
+00196 *to = 0;
+00197
+00198 <font class="keywordflow">return</font> 0;
+00199 }
+00200
+00201
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlplain_8h-source.html b/doc/api-documentation/html/thmlplain_8h-source.html
new file mode 100644
index 0000000..a0abf92
--- /dev/null
+++ b/doc/api-documentation/html/thmlplain_8h-source.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlplain.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlplain.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlplain.h</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLPLAIN_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLPLAIN_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_plain.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_plain.html">ThMLPlain</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keyword">public</font>:
+00033 <a class="code" href="class_th_m_l_plain.html">ThMLPlain</a> ();
+00034 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen = -1);
+00035 };
+00036
+00037 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlrtf_8cpp-source.html b/doc/api-documentation/html/thmlrtf_8cpp-source.html
new file mode 100644
index 0000000..2db4b10
--- /dev/null
+++ b/doc/api-documentation/html/thmlrtf_8cpp-source.html
@@ -0,0 +1,236 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlrtf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlrtf.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
+00002 <font class="comment"> thmlrtf.cpp - ThML to RTF filter</font>
+00003 <font class="comment"> -------------------</font>
+00004 <font class="comment"> begin : 1999-10-27</font>
+00005 <font class="comment"> copyright : 2001 by CrossWire Bible Society</font>
+00006 <font class="comment"> ***************************************************************************/</font>
+00007
+00008 <font class="comment">/***************************************************************************</font>
+00009 <font class="comment"> * *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
+00013 <font class="comment"> * (at your option) any later version. *</font>
+00014 <font class="comment"> * *</font>
+00015 <font class="comment"> ***************************************************************************/</font>
+00016
+00017 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;thmlrtf.h&gt;</font>
+00020
+00021
+00022 ThMLRTF::ThMLRTF()
+00023 {
+00024 setTokenStart(<font class="stringliteral">"&lt;"</font>);
+00025 setTokenEnd(<font class="stringliteral">"&gt;"</font>);
+00026
+00027 setEscapeStart(<font class="stringliteral">"&amp;"</font>);
+00028 setEscapeEnd(<font class="stringliteral">";"</font>);
+00029
+00030 setEscapeStringCaseSensitive(<font class="keyword">true</font>);
+00031
+00032 addEscapeStringSubstitute(<font class="stringliteral">"nbsp"</font>, <font class="stringliteral">" "</font>);
+00033 addEscapeStringSubstitute(<font class="stringliteral">"quot"</font>, <font class="stringliteral">"\""</font>);
+00034 addEscapeStringSubstitute(<font class="stringliteral">"amp"</font>, <font class="stringliteral">"&amp;"</font>);
+00035 addEscapeStringSubstitute(<font class="stringliteral">"lt"</font>, <font class="stringliteral">"&lt;"</font>);
+00036 addEscapeStringSubstitute(<font class="stringliteral">"gt"</font>, <font class="stringliteral">"&gt;"</font>);
+00037 addEscapeStringSubstitute(<font class="stringliteral">"brvbar"</font>, <font class="stringliteral">"|"</font>);
+00038 addEscapeStringSubstitute(<font class="stringliteral">"sect"</font>, <font class="stringliteral">"§"</font>);
+00039 addEscapeStringSubstitute(<font class="stringliteral">"copy"</font>, <font class="stringliteral">"©"</font>);
+00040 addEscapeStringSubstitute(<font class="stringliteral">"laquo"</font>, <font class="stringliteral">"«"</font>);
+00041 addEscapeStringSubstitute(<font class="stringliteral">"reg"</font>, <font class="stringliteral">"®"</font>);
+00042 addEscapeStringSubstitute(<font class="stringliteral">"acute"</font>, <font class="stringliteral">"´"</font>);
+00043 addEscapeStringSubstitute(<font class="stringliteral">"para"</font>, <font class="stringliteral">"¶"</font>);
+00044 addEscapeStringSubstitute(<font class="stringliteral">"raquo"</font>, <font class="stringliteral">"»"</font>);
+00045
+00046 addEscapeStringSubstitute(<font class="stringliteral">"Aacute"</font>, <font class="stringliteral">"Á"</font>);
+00047 addEscapeStringSubstitute(<font class="stringliteral">"Agrave"</font>, <font class="stringliteral">"À"</font>);
+00048 addEscapeStringSubstitute(<font class="stringliteral">"Acirc"</font>, <font class="stringliteral">"Â"</font>);
+00049 addEscapeStringSubstitute(<font class="stringliteral">"Auml"</font>, <font class="stringliteral">"Ä"</font>);
+00050 addEscapeStringSubstitute(<font class="stringliteral">"Atilde"</font>, <font class="stringliteral">"Ã"</font>);
+00051 addEscapeStringSubstitute(<font class="stringliteral">"Aring"</font>, <font class="stringliteral">"Å"</font>);
+00052 addEscapeStringSubstitute(<font class="stringliteral">"aacute"</font>, <font class="stringliteral">"á"</font>);
+00053 addEscapeStringSubstitute(<font class="stringliteral">"agrave"</font>, <font class="stringliteral">"à"</font>);
+00054 addEscapeStringSubstitute(<font class="stringliteral">"acirc"</font>, <font class="stringliteral">"â"</font>);
+00055 addEscapeStringSubstitute(<font class="stringliteral">"auml"</font>, <font class="stringliteral">"ä"</font>);
+00056 addEscapeStringSubstitute(<font class="stringliteral">"atilde"</font>, <font class="stringliteral">"ã"</font>);
+00057 addEscapeStringSubstitute(<font class="stringliteral">"aring"</font>, <font class="stringliteral">"å"</font>);
+00058 addEscapeStringSubstitute(<font class="stringliteral">"Eacute"</font>, <font class="stringliteral">"É"</font>);
+00059 addEscapeStringSubstitute(<font class="stringliteral">"Egrave"</font>, <font class="stringliteral">"È"</font>);
+00060 addEscapeStringSubstitute(<font class="stringliteral">"Ecirc"</font>, <font class="stringliteral">"Ê"</font>);
+00061 addEscapeStringSubstitute(<font class="stringliteral">"Euml"</font>, <font class="stringliteral">"Ë"</font>);
+00062 addEscapeStringSubstitute(<font class="stringliteral">"eacute"</font>, <font class="stringliteral">"é"</font>);
+00063 addEscapeStringSubstitute(<font class="stringliteral">"egrave"</font>, <font class="stringliteral">"è"</font>);
+00064 addEscapeStringSubstitute(<font class="stringliteral">"ecirc"</font>, <font class="stringliteral">"ê"</font>);
+00065 addEscapeStringSubstitute(<font class="stringliteral">"euml"</font>, <font class="stringliteral">"ë"</font>);
+00066 addEscapeStringSubstitute(<font class="stringliteral">"Iacute"</font>, <font class="stringliteral">"Í"</font>);
+00067 addEscapeStringSubstitute(<font class="stringliteral">"Igrave"</font>, <font class="stringliteral">"Ì"</font>);
+00068 addEscapeStringSubstitute(<font class="stringliteral">"Icirc"</font>, <font class="stringliteral">"Î"</font>);
+00069 addEscapeStringSubstitute(<font class="stringliteral">"Iuml"</font>, <font class="stringliteral">"Ï"</font>);
+00070 addEscapeStringSubstitute(<font class="stringliteral">"iacute"</font>, <font class="stringliteral">"í"</font>);
+00071 addEscapeStringSubstitute(<font class="stringliteral">"igrave"</font>, <font class="stringliteral">"ì"</font>);
+00072 addEscapeStringSubstitute(<font class="stringliteral">"icirc"</font>, <font class="stringliteral">"î"</font>);
+00073 addEscapeStringSubstitute(<font class="stringliteral">"iuml"</font>, <font class="stringliteral">"ï"</font>);
+00074 addEscapeStringSubstitute(<font class="stringliteral">"Oacute"</font>, <font class="stringliteral">"Ó"</font>);
+00075 addEscapeStringSubstitute(<font class="stringliteral">"Ograve"</font>, <font class="stringliteral">"Ò"</font>);
+00076 addEscapeStringSubstitute(<font class="stringliteral">"Ocirc"</font>, <font class="stringliteral">"Ô"</font>);
+00077 addEscapeStringSubstitute(<font class="stringliteral">"Ouml"</font>, <font class="stringliteral">"Ö"</font>);
+00078 addEscapeStringSubstitute(<font class="stringliteral">"Otilde"</font>, <font class="stringliteral">"Õ"</font>);
+00079 addEscapeStringSubstitute(<font class="stringliteral">"oacute"</font>, <font class="stringliteral">"ó"</font>);
+00080 addEscapeStringSubstitute(<font class="stringliteral">"ograve"</font>, <font class="stringliteral">"ò"</font>);
+00081 addEscapeStringSubstitute(<font class="stringliteral">"ocirc"</font>, <font class="stringliteral">"ô"</font>);
+00082 addEscapeStringSubstitute(<font class="stringliteral">"ouml"</font>, <font class="stringliteral">"ö"</font>);
+00083 addEscapeStringSubstitute(<font class="stringliteral">"otilde"</font>, <font class="stringliteral">"õ"</font>);
+00084 addEscapeStringSubstitute(<font class="stringliteral">"Uacute"</font>, <font class="stringliteral">"Ú"</font>);
+00085 addEscapeStringSubstitute(<font class="stringliteral">"Ugrave"</font>, <font class="stringliteral">"Ù"</font>);
+00086 addEscapeStringSubstitute(<font class="stringliteral">"Ucirc"</font>, <font class="stringliteral">"Û"</font>);
+00087 addEscapeStringSubstitute(<font class="stringliteral">"Uuml"</font>, <font class="stringliteral">"Ü"</font>);
+00088 addEscapeStringSubstitute(<font class="stringliteral">"uacute"</font>, <font class="stringliteral">"ú"</font>);
+00089 addEscapeStringSubstitute(<font class="stringliteral">"ugrave"</font>, <font class="stringliteral">"ù"</font>);
+00090 addEscapeStringSubstitute(<font class="stringliteral">"ucirc"</font>, <font class="stringliteral">"û"</font>);
+00091 addEscapeStringSubstitute(<font class="stringliteral">"uuml"</font>, <font class="stringliteral">"ü"</font>);
+00092 addEscapeStringSubstitute(<font class="stringliteral">"Yacute"</font>, <font class="stringliteral">"Ý"</font>);
+00093 addEscapeStringSubstitute(<font class="stringliteral">"yacute"</font>, <font class="stringliteral">"ý"</font>);
+00094 addEscapeStringSubstitute(<font class="stringliteral">"yuml"</font>, <font class="stringliteral">"ÿ"</font>);
+00095
+00096 addEscapeStringSubstitute(<font class="stringliteral">"deg"</font>, <font class="stringliteral">"°"</font>);
+00097 addEscapeStringSubstitute(<font class="stringliteral">"plusmn"</font>, <font class="stringliteral">"±"</font>);
+00098 addEscapeStringSubstitute(<font class="stringliteral">"sup2"</font>, <font class="stringliteral">"²"</font>);
+00099 addEscapeStringSubstitute(<font class="stringliteral">"sup3"</font>, <font class="stringliteral">"³"</font>);
+00100 addEscapeStringSubstitute(<font class="stringliteral">"sup1"</font>, <font class="stringliteral">"¹"</font>);
+00101 addEscapeStringSubstitute(<font class="stringliteral">"nbsp"</font>, <font class="stringliteral">"º"</font>);
+00102 addEscapeStringSubstitute(<font class="stringliteral">"pound"</font>, <font class="stringliteral">"£"</font>);
+00103 addEscapeStringSubstitute(<font class="stringliteral">"cent"</font>, <font class="stringliteral">"¢"</font>);
+00104 addEscapeStringSubstitute(<font class="stringliteral">"frac14"</font>, <font class="stringliteral">"¼"</font>);
+00105 addEscapeStringSubstitute(<font class="stringliteral">"frac12"</font>, <font class="stringliteral">"½"</font>);
+00106 addEscapeStringSubstitute(<font class="stringliteral">"frac34"</font>, <font class="stringliteral">"¾"</font>);
+00107 addEscapeStringSubstitute(<font class="stringliteral">"iquest"</font>, <font class="stringliteral">"¿"</font>);
+00108 addEscapeStringSubstitute(<font class="stringliteral">"iexcl"</font>, <font class="stringliteral">"¡"</font>);
+00109 addEscapeStringSubstitute(<font class="stringliteral">"ETH"</font>, <font class="stringliteral">"Ð"</font>);
+00110 addEscapeStringSubstitute(<font class="stringliteral">"eth"</font>, <font class="stringliteral">"ð"</font>);
+00111 addEscapeStringSubstitute(<font class="stringliteral">"THORN"</font>, <font class="stringliteral">"Þ"</font>);
+00112 addEscapeStringSubstitute(<font class="stringliteral">"thorn"</font>, <font class="stringliteral">"þ"</font>);
+00113 addEscapeStringSubstitute(<font class="stringliteral">"AElig"</font>, <font class="stringliteral">"Æ"</font>);
+00114 addEscapeStringSubstitute(<font class="stringliteral">"aelig"</font>, <font class="stringliteral">"æ"</font>);
+00115 addEscapeStringSubstitute(<font class="stringliteral">"Oslash"</font>, <font class="stringliteral">"Ø"</font>);
+00116 addEscapeStringSubstitute(<font class="stringliteral">"curren"</font>, <font class="stringliteral">"¤"</font>);
+00117 addEscapeStringSubstitute(<font class="stringliteral">"Ccedil"</font>, <font class="stringliteral">"Ç"</font>);
+00118 addEscapeStringSubstitute(<font class="stringliteral">"ccedil"</font>, <font class="stringliteral">"ç"</font>);
+00119 addEscapeStringSubstitute(<font class="stringliteral">"szlig"</font>, <font class="stringliteral">"ß"</font>);
+00120 addEscapeStringSubstitute(<font class="stringliteral">"Ntilde"</font>, <font class="stringliteral">"Ñ"</font>);
+00121 addEscapeStringSubstitute(<font class="stringliteral">"ntilde"</font>, <font class="stringliteral">"ñ"</font>);
+00122 addEscapeStringSubstitute(<font class="stringliteral">"yen"</font>, <font class="stringliteral">"¥"</font>);
+00123 addEscapeStringSubstitute(<font class="stringliteral">"not"</font>, <font class="stringliteral">"¬"</font>);
+00124 addEscapeStringSubstitute(<font class="stringliteral">"ordf"</font>, <font class="stringliteral">"ª"</font>);
+00125 addEscapeStringSubstitute(<font class="stringliteral">"uml"</font>, <font class="stringliteral">"¨"</font>);
+00126 addEscapeStringSubstitute(<font class="stringliteral">"shy"</font>, <font class="stringliteral">"­"</font>);
+00127 addEscapeStringSubstitute(<font class="stringliteral">"macr"</font>, <font class="stringliteral">"¯"</font>);
+00128
+00129 setTokenCaseSensitive(<font class="keyword">true</font>);
+00130
+00131 addTokenSubstitute(<font class="stringliteral">"/note"</font>, <font class="stringliteral">") }"</font>);
+00132
+00133 addTokenSubstitute(<font class="stringliteral">"br"</font>, <font class="stringliteral">"\\line "</font>);
+00134 addTokenSubstitute(<font class="stringliteral">"br /"</font>, <font class="stringliteral">"\\line "</font>);
+00135 addTokenSubstitute(<font class="stringliteral">"i"</font>, <font class="stringliteral">"{\\i1 "</font>);
+00136 addTokenSubstitute(<font class="stringliteral">"/i"</font>, <font class="stringliteral">"}"</font>);
+00137 addTokenSubstitute(<font class="stringliteral">"b"</font>, <font class="stringliteral">"{\\b1 "</font>);
+00138 addTokenSubstitute(<font class="stringliteral">"/b"</font>, <font class="stringliteral">"}"</font>);
+00139 addTokenSubstitute(<font class="stringliteral">"p"</font>, <font class="stringliteral">"\\par "</font>);
+00140
+00141 <font class="comment">//we need uppercase forms for the moment to support a few early ThML modules that aren't XHTML compliant</font>
+00142 addTokenSubstitute(<font class="stringliteral">"BR"</font>, <font class="stringliteral">"\\line "</font>);
+00143 addTokenSubstitute(<font class="stringliteral">"I"</font>, <font class="stringliteral">"{\\i1 "</font>);
+00144 addTokenSubstitute(<font class="stringliteral">"/I"</font>, <font class="stringliteral">"}"</font>);
+00145 addTokenSubstitute(<font class="stringliteral">"B"</font>, <font class="stringliteral">"{\\b1 "</font>);
+00146 addTokenSubstitute(<font class="stringliteral">"/B"</font>, <font class="stringliteral">"}"</font>);
+00147 addTokenSubstitute(<font class="stringliteral">"P"</font>, <font class="stringliteral">"\\par "</font>);
+00148 }
+00149
+<a name="l00150"></a><a class="code" href="class_th_m_l_r_t_f.html#b0">00150</a> <font class="keywordtype">bool</font> <a class="code" href="class_th_m_l_r_t_f.html#b0">ThMLRTF::handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData) {
+00151 <font class="keywordflow">if</font> (!substituteToken(buf, token)) {
+00152 <font class="comment">// manually process if it wasn't a simple substitution</font>
+00153 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"Strongs\" value=\""</font>, 27)) {
+00154 <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'H'</font> || token[27] == <font class="charliteral">'G'</font> || token[27] == <font class="charliteral">'A'</font>) {
+00155 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\fs15 &lt;"</font>);
+00156 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 28; token[i] != <font class="charliteral">'\"'</font>; i++)
+00157 *(*buf)++ = token[i];
+00158 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&gt;}"</font>);
+00159 }
+00160 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (token[27] == <font class="charliteral">'T'</font>) {
+00161 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\fs15 ("</font>);
+00162 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 28; token[i] != <font class="charliteral">'\"'</font>; i++)
+00163 *(*buf)++ = token[i];
+00164 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")}"</font>);
+00165 }
+00166 }
+00167 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\" "</font>, 18)) {
+00168 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\fs15 ("</font>);
+00169 <font class="keywordflow">for</font> (<font class="keyword">const</font> <font class="keywordtype">char</font> *tok = token + 5; *tok; tok++) {
+00170 <font class="keywordflow">if</font> (!strncmp(tok, <font class="stringliteral">"value=\""</font>, 7)) {
+00171 tok += 7;
+00172 <font class="keywordflow">for</font> (;*tok != <font class="charliteral">'\"'</font>; tok++)
+00173 *(*buf)++ = *tok;
+00174 <font class="keywordflow">break</font>;
+00175 }
+00176 }
+00177
+00178 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")}"</font>);
+00179 }
+00180 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"lemma\" value=\""</font>, 25)) {
+00181 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"{\\fs15 ("</font>);
+00182 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 25; token[i] != <font class="charliteral">'\"'</font>; i++)
+00183 *(*buf)++ = token[i];
+00184 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">")}"</font>);
+00185 }
+00186 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00187 <font class="comment">// pushString(buf, "{\\cf2 #");</font>
+00188 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;a href=\"\"&gt;"</font>);
+00189 }
+00190 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/scripRef"</font>, 9)) {
+00191 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"&lt;/a&gt;"</font>);
+00192 }
+00193 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div"</font>, 3)) {
+00194 *(*buf)++ = <font class="charliteral">'{'</font>;
+00195 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"title\""</font>, 17)) {
+00196 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"\\par\\i1\\b1 "</font>);
+00197 userData[<font class="stringliteral">"sechead"</font>] = <font class="stringliteral">"true"</font>;
+00198 }
+00199 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div class=\"sechead\""</font>, 19)) {
+00200 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"\\par\\i1\\b1 "</font>);
+00201 userData[<font class="stringliteral">"sechead"</font>] = <font class="stringliteral">"true"</font>;
+00202 }
+00203 }
+00204 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/div"</font>, 4)) {
+00205 *(*buf)++ = <font class="charliteral">'}'</font>;
+00206 <font class="keywordflow">if</font> (userData[<font class="stringliteral">"sechead"</font>] == <font class="stringliteral">"true"</font>) {
+00207 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"\\par "</font>);
+00208 userData[<font class="stringliteral">"sechead"</font>] == <font class="stringliteral">"false"</font>;
+00209 }
+00210 }
+00211 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"note"</font>, 4)) {
+00212 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" {\\i1\\fs15 ("</font>);
+00213 }
+00214
+00215 <font class="keywordflow">else</font> {
+00216 <font class="keywordflow">return</font> <font class="keyword">false</font>; <font class="comment">// we still didn't handle token</font>
+00217 }
+00218 }
+00219 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00220 }
+00221
+00222
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlrtf_8h-source.html b/doc/api-documentation/html/thmlrtf_8h-source.html
new file mode 100644
index 0000000..b98c878
--- /dev/null
+++ b/doc/api-documentation/html/thmlrtf_8h-source.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlrtf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlrtf.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlrtf.h</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLRTF_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLRTF_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swbasicfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_r_t_f.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_r_t_f.html">ThMLRTF</a>:<font class="keyword">public</font> <a class="code" href="class_s_w_basic_filter.html">SWBasicFilter</a>
+00031 {
+00032 <font class="keyword">protected</font>:
+00033 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_basic_filter.html#b13">handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &amp;userData);
+00034 <font class="keyword">public</font>:
+00035 <a class="code" href="class_th_m_l_r_t_f.html">ThMLRTF</a> ();
+00036 };
+00037
+00038 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlscripref_8cpp-source.html b/doc/api-documentation/html/thmlscripref_8cpp-source.html
new file mode 100644
index 0000000..154fff9
--- /dev/null
+++ b/doc/api-documentation/html/thmlscripref_8cpp-source.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlscripref.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlscripref.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlscripref - SWFilter decendant to hide or show scripture references</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;thmlscripref.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLScripref::on[] = <font class="stringliteral">"On"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLScripref::off[] = <font class="stringliteral">"Off"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLScripref::optName[] = <font class="stringliteral">"Scripture Cross-references"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLScripref::optTip[] = <font class="stringliteral">"Toggles Scripture Cross-references On and Off if they exist"</font>;
+00021
+00022
+00023 ThMLScripref::ThMLScripref() {
+00024 option = <font class="keyword">false</font>;
+00025 options.push_back(on);
+00026 options.push_back(off);
+00027 }
+00028
+00029
+00030 ThMLScripref::~ThMLScripref() {
+00031 }
+00032
+00033 <font class="keywordtype">void</font> ThMLScripref::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00034 {
+00035 option = (!stricmp(ival, on));
+00036 }
+00037
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLScripref::getOptionValue()
+00039 {
+00040 <font class="keywordflow">return</font> (option) ? on:off;
+00041 }
+00042
+00043 <font class="keywordtype">char</font> ThMLScripref::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00044 {
+00045 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want scriprefs</font>
+00046 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00047 <font class="keywordtype">int</font> tokpos = 0;
+00048 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00049 <font class="keywordtype">int</font> len;
+00050 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00051
+00052 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00053 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00054 memmove(&amp;text[maxlen - len], text, len);
+00055 from = &amp;text[maxlen - len];
+00056 }
+00057 <font class="keywordflow">else</font> from = text; <font class="comment">// -------------------------------</font>
+00058
+00059 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00060 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00061 intoken = <font class="keyword">true</font>;
+00062 tokpos = 0;
+00063 token[0] = 0;
+00064 token[1] = 0;
+00065 token[2] = 0;
+00066 <font class="keywordflow">continue</font>;
+00067 }
+00068 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00069 intoken = <font class="keyword">false</font>;
+00070 <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"scripRef"</font>, 8)) {
+00071 hide = <font class="keyword">true</font>;
+00072 <font class="keywordflow">continue</font>;
+00073 }
+00074 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"/scripRef"</font>, 9)) {
+00075 hide = <font class="keyword">false</font>;
+00076 <font class="keywordflow">continue</font>;
+00077 }
+00078
+00079 <font class="comment">// if not a scripref token, keep token in text</font>
+00080 <font class="keywordflow">if</font> (!hide) {
+00081 *to++ = <font class="charliteral">'&lt;'</font>;
+00082 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00083 *to++ = *tok;
+00084 *to++ = <font class="charliteral">'&gt;'</font>;
+00085 }
+00086 <font class="keywordflow">continue</font>;
+00087 }
+00088 <font class="keywordflow">if</font> (intoken) {
+00089 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00090 token[tokpos++] = *from;
+00091 token[tokpos+2] = 0;
+00092 }
+00093 <font class="keywordflow">else</font> {
+00094 <font class="keywordflow">if</font> (!hide) {
+00095 *to++ = *from;
+00096 }
+00097 }
+00098 }
+00099 *to++ = 0;
+00100 *to = 0;
+00101 }
+00102 <font class="keywordflow">return</font> 0;
+00103 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlscripref_8h-source.html b/doc/api-documentation/html/thmlscripref_8h-source.html
new file mode 100644
index 0000000..d7effc5
--- /dev/null
+++ b/doc/api-documentation/html/thmlscripref_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlscripref.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlscripref.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: </font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLSCRIPREF_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLSCRIPREF_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_scripref.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_scripref.html">ThMLScripref</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_th_m_l_scripref.html">ThMLScripref</a> ();
+00040 <font class="keyword">virtual</font> ~ ThMLScripref ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlstrongs_8cpp-source.html b/doc/api-documentation/html/thmlstrongs_8cpp-source.html
new file mode 100644
index 0000000..0f02970
--- /dev/null
+++ b/doc/api-documentation/html/thmlstrongs_8cpp-source.html
@@ -0,0 +1,170 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlstrongs.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlstrongs.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlstrongs - SWFilter decendant to hide or show strongs number</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;thmlstrongs.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00013 <font class="preprocessor">#ifndef __GNUC__</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00016 <font class="preprocessor">#endif</font>
+00017 <font class="preprocessor"></font>
+00018
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLStrongs::on[] = <font class="stringliteral">"On"</font>;
+00020 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLStrongs::off[] = <font class="stringliteral">"Off"</font>;
+00021 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLStrongs::optName[] = <font class="stringliteral">"Strong's Numbers"</font>;
+00022 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLStrongs::optTip[] = <font class="stringliteral">"Toggles Strong's Numbers On and Off if they exist"</font>;
+00023
+00024
+00025 ThMLStrongs::ThMLStrongs() {
+00026 option = <font class="keyword">false</font>;
+00027 options.push_back(on);
+00028 options.push_back(off);
+00029 }
+00030
+00031
+00032 ThMLStrongs::~ThMLStrongs() {
+00033 }
+00034
+00035 <font class="keywordtype">void</font> ThMLStrongs::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00036 {
+00037 option = (!stricmp(ival, on));
+00038 }
+00039
+00040 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLStrongs::getOptionValue()
+00041 {
+00042 <font class="keywordflow">return</font> (option) ? on:off;
+00043 }
+00044
+00045 <font class="keywordtype">char</font> ThMLStrongs::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00046 {
+00047 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00048 <font class="keywordtype">int</font> tokpos = 0;
+00049 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00050 <font class="keywordtype">int</font> len;
+00051 <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
+00052 <font class="keywordtype">int</font> word = 1;
+00053 <font class="keywordtype">char</font> val[128];
+00054 <font class="keywordtype">char</font> wordstr[5];
+00055 <font class="keywordtype">char</font> *valto;
+00056 <font class="keywordtype">char</font> *ch;
+00057 <font class="keywordtype">char</font> *textStart = text, *textEnd = 0;
+00058 string tmp;
+00059 <font class="keywordtype">bool</font> newText = <font class="keyword">false</font>;
+00060
+00061 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00062 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00063 memmove(&amp;text[maxlen - len], text, len);
+00064 from = &amp;text[maxlen - len];
+00065 }
+00066 <font class="keywordflow">else</font> from = text;
+00067
+00068 <font class="comment">// -------------------------------</font>
+00069
+00070 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00071 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00072 intoken = <font class="keyword">true</font>;
+00073 tokpos = 0;
+00074 token[0] = 0;
+00075 token[1] = 0;
+00076 token[2] = 0;
+00077 textEnd = to;
+00078 <font class="keywordflow">continue</font>;
+00079 }
+00080 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00081 intoken = <font class="keyword">false</font>;
+00082 <font class="keywordflow">if</font> (!strnicmp(token, <font class="stringliteral">"sync type=\"Strongs\" "</font>, 20)) { <font class="comment">// Strongs</font>
+00083 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a64">isProcessEntryAttributes</a>()) {
+00084 valto = val;
+00085 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 27; token[i] != <font class="charliteral">'\"'</font> &amp;&amp; i &lt; 150; i++)
+00086 *valto++ = token[i];
+00087 *valto = 0;
+00088 <font class="keywordflow">if</font> (atoi((!isdigit(*val))?val+1:val) &lt; 5627) {
+00089 <font class="comment">// normal strongs number</font>
+00090 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word++);
+00091 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Strongs"</font>] = val;
+00092 tmp = <font class="stringliteral">""</font>;
+00093 tmp.append(textStart, (<font class="keywordtype">int</font>)(textEnd - textStart));
+00094 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Text"</font>] = tmp;
+00095 newText = <font class="keyword">true</font>;
+00096 }
+00097 <font class="keywordflow">else</font> {
+00098 <font class="comment">// verb morph</font>
+00099 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
+00100 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>] = val;
+00101 }
+00102 }
+00103
+00104 <font class="keywordflow">if</font> (!option) { <font class="comment">// if we don't want strongs</font>
+00105 <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">' '</font>) || (from[1] == <font class="charliteral">','</font>) || (from[1] == <font class="charliteral">';'</font>) || (from[1] == <font class="charliteral">'.'</font>) || (from[1] == <font class="charliteral">'?'</font>) || (from[1] == <font class="charliteral">'!'</font>) || (from[1] == <font class="charliteral">')'</font>) || (from[1] == <font class="charliteral">'\''</font>) || (from[1] == <font class="charliteral">'\"'</font>)) {
+00106 <font class="keywordflow">if</font> (lastspace)
+00107 to--;
+00108 }
+00109 <font class="keywordflow">if</font> (newText) {textStart = to; newText = <font class="keyword">false</font>; }
+00110 <font class="keywordflow">continue</font>;
+00111 }
+00112 }
+00113 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a64">isProcessEntryAttributes</a>()) {
+00114 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"sync type=\"morph\""</font>, 17)) {
+00115 <font class="keywordflow">for</font> (ch = token+17; *ch; ch++) {
+00116 <font class="keywordflow">if</font> (!strncmp(ch, <font class="stringliteral">"class=\""</font>, 7)) {
+00117 valto = val;
+00118 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 7; ch[i] != <font class="charliteral">'\"'</font> &amp;&amp; i &lt; 127; i++)
+00119 *valto++ = ch[i];
+00120 *valto = 0;
+00121 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
+00122 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"MorphClass"</font>] = val;
+00123 }
+00124 <font class="keywordflow">if</font> (!strncmp(ch, <font class="stringliteral">"value=\""</font>, 7)) {
+00125 valto = val;
+00126 <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 7; ch[i] != <font class="charliteral">'\"'</font> &amp;&amp; i &lt; 127; i++)
+00127 *valto++ = ch[i];
+00128 *valto = 0;
+00129 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
+00130 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>] = val;
+00131 }
+00132 }
+00133 }
+00134 }
+00135 <font class="comment">// if not a strongs token, keep token in text</font>
+00136 *to++ = <font class="charliteral">'&lt;'</font>;
+00137 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00138 *to++ = *tok;
+00139 *to++ = <font class="charliteral">'&gt;'</font>;
+00140 <font class="keywordflow">if</font> (newText) {textStart = to; newText = <font class="keyword">false</font>; }
+00141 <font class="keywordflow">continue</font>;
+00142 }
+00143 <font class="keywordflow">if</font> (intoken) {
+00144 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00145 token[tokpos++] = *from;
+00146 token[tokpos+2] = 0;
+00147 }
+00148 <font class="keywordflow">else</font> {
+00149 *to++ = *from;
+00150 lastspace = (*from == <font class="charliteral">' '</font>);
+00151 }
+00152 }
+00153 *to++ = 0;
+00154 *to = 0;
+00155 <font class="keywordflow">return</font> 0;
+00156 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlstrongs_8h-source.html b/doc/api-documentation/html/thmlstrongs_8h-source.html
new file mode 100644
index 0000000..6f24332
--- /dev/null
+++ b/doc/api-documentation/html/thmlstrongs_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlstrongs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlstrongs.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id:</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef THMLSTRONGS_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define THMLSTRONGS_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_th_m_l_strongs.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_strongs.html">ThMLStrongs</a>:<font class="keyword">public</font> SWFilter
+00031 {
+00032 <font class="keywordtype">bool</font> option;
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00037 OptionsList options;
+00038 <font class="keyword">public</font>:
+00039 <a class="code" href="class_th_m_l_strongs.html">ThMLStrongs</a> ();
+00040 <font class="keyword">virtual</font> ~ ThMLStrongs ();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00043 {
+00044 <font class="keywordflow">return</font> optName;
+00045 }
+00046 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00047 {
+00048 <font class="keywordflow">return</font> optTip;
+00049 }
+00050 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00052 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00053 {
+00054 <font class="keywordflow">return</font> options;
+00055 }
+00056 };
+00057
+00058 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlvariants_8cpp-source.html b/doc/api-documentation/html/thmlvariants_8cpp-source.html
new file mode 100644
index 0000000..1f5d6ba
--- /dev/null
+++ b/doc/api-documentation/html/thmlvariants_8cpp-source.html
@@ -0,0 +1,199 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlvariants.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlvariants.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * thmlvariants - SWFilter decendant to hide or show textual variants</font>
+00004 <font class="comment"> * in a ThML module.</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;thmlvariants.h&gt;</font>
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016
+00017 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLVariants::primary[] = <font class="stringliteral">"Primary Reading"</font>;
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLVariants::secondary[] = <font class="stringliteral">"Secondary Reading"</font>;
+00019 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLVariants::all[] = <font class="stringliteral">"All Readings"</font>;
+00020
+00021 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLVariants::optName[] = <font class="stringliteral">"Textual Variants"</font>;
+00022 <font class="keyword">const</font> <font class="keywordtype">char</font> ThMLVariants::optTip[] = <font class="stringliteral">"Switch between Textual Variants modes"</font>;
+00023
+00024
+00025 ThMLVariants::ThMLVariants() {
+00026 option = <font class="keyword">false</font>;
+00027 options.push_back(primary);
+00028 options.push_back(secondary);
+00029 options.push_back(all);
+00030 }
+00031
+00032
+00033 ThMLVariants::~ThMLVariants() {
+00034 }
+00035
+00036 <font class="keywordtype">void</font> ThMLVariants::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00037 {
+00038 <font class="keywordflow">if</font> (!stricmp(ival, primary)) option = 0;
+00039 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(ival, secondary)) option = 1;
+00040 <font class="keywordflow">else</font> option = 2;
+00041 }
+00042
+00043 <font class="keyword">const</font> <font class="keywordtype">char</font> *ThMLVariants::getOptionValue()
+00044 {
+00045 <font class="keywordflow">if</font> (option == 0) {
+00046 <font class="keywordflow">return</font> primary;
+00047 }
+00048 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (option == 1) {
+00049 <font class="keywordflow">return</font> secondary;
+00050 }
+00051 <font class="keywordflow">else</font> {
+00052 <font class="keywordflow">return</font> all;
+00053 }
+00054 }
+00055
+00056 <font class="keywordtype">char</font> ThMLVariants::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00057 {
+00058 <font class="keywordflow">if</font> (option == 0) { <font class="comment">//we want primary only</font>
+00059 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00060 <font class="keywordtype">int</font> tokpos = 0;
+00061 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00062 <font class="keywordtype">int</font> len;
+00063 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00064
+00065 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00066 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00067 memmove(&amp;text[maxlen - len], text, len);
+00068 from = &amp;text[maxlen - len];
+00069 }
+00070 <font class="keywordflow">else</font> from = text;
+00071
+00072 <font class="comment">// -------------------------------</font>
+00073
+00074 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00075 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00076 intoken = <font class="keyword">true</font>;
+00077 tokpos = 0;
+00078 token[0] = 0;
+00079 token[1] = 0;
+00080 token[2] = 0;
+00081 <font class="keywordflow">continue</font>;
+00082 }
+00083 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00084 intoken = <font class="keyword">false</font>;
+00085 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div type=\"variant\" class=\"2\""</font>, 28)) {
+00086 hide = <font class="keyword">true</font>;
+00087 <font class="keywordflow">continue</font>;
+00088 }
+00089 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/div"</font>, 4)) {
+00090 hide = <font class="keyword">false</font>;
+00091 <font class="keywordflow">continue</font>;
+00092 }
+00093
+00094 <font class="comment">// if not a footnote token, keep token in text</font>
+00095 <font class="keywordflow">if</font> (!hide) {
+00096 *to++ = <font class="charliteral">'&lt;'</font>;
+00097 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00098 *to++ = *tok;
+00099 *to++ = <font class="charliteral">'&gt;'</font>;
+00100 }
+00101 <font class="keywordflow">continue</font>;
+00102 }
+00103 <font class="keywordflow">if</font> (intoken) {
+00104 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00105 token[tokpos++] = *from;
+00106 token[tokpos+2] = 0;
+00107 }
+00108 <font class="keywordflow">else</font> {
+00109 <font class="keywordflow">if</font> (!hide) {
+00110 *to++ = *from;
+00111 }
+00112 }
+00113 }
+00114 *to++ = 0;
+00115 *to = 0;
+00116
+00117 }
+00118 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (option == 1) { <font class="comment">//we want variant only</font>
+00119 <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese. Fix.</font>
+00120 <font class="keywordtype">int</font> tokpos = 0;
+00121 <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
+00122 <font class="keywordtype">int</font> len;
+00123 <font class="keywordtype">bool</font> hide = <font class="keyword">false</font>;
+00124
+00125 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00126 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00127 memmove(&amp;text[maxlen - len], text, len);
+00128 from = &amp;text[maxlen - len];
+00129 }
+00130 <font class="keywordflow">else</font> from = text;
+00131
+00132 <font class="comment">// -------------------------------</font>
+00133
+00134 <font class="keywordflow">for</font> (to = text; *from; from++) {
+00135 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
+00136 intoken = <font class="keyword">true</font>;
+00137 tokpos = 0;
+00138 token[0] = 0;
+00139 token[1] = 0;
+00140 token[2] = 0;
+00141 <font class="keywordflow">continue</font>;
+00142 }
+00143 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) { <font class="comment">// process tokens</font>
+00144 intoken = <font class="keyword">false</font>;
+00145 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"div type=\"variant\" class=\"1\""</font>, 28)) {
+00146 hide = <font class="keyword">true</font>;
+00147 <font class="keywordflow">continue</font>;
+00148 }
+00149 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"/div"</font>, 4)) {
+00150 hide = <font class="keyword">false</font>;
+00151 <font class="keywordflow">continue</font>;
+00152 }
+00153
+00154 <font class="comment">// if not a footnote token, keep token in text</font>
+00155 <font class="keywordflow">if</font> (!hide) {
+00156 *to++ = <font class="charliteral">'&lt;'</font>;
+00157 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
+00158 *to++ = *tok;
+00159 *to++ = <font class="charliteral">'&gt;'</font>;
+00160 }
+00161 <font class="keywordflow">continue</font>;
+00162 }
+00163 <font class="keywordflow">if</font> (intoken) {
+00164 <font class="keywordflow">if</font> (tokpos &lt; 2045)
+00165 token[tokpos++] = *from;
+00166 token[tokpos+2] = 0;
+00167 }
+00168 <font class="keywordflow">else</font> {
+00169 <font class="keywordflow">if</font> (!hide) {
+00170 *to++ = *from;
+00171 }
+00172 }
+00173 }
+00174 *to++ = 0;
+00175 *to = 0;
+00176
+00177 }
+00178 <font class="keywordflow">return</font> 0;
+00179 }
+00180
+00181
+00182
+00183
+00184
+00185
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/thmlvariants_8h-source.html b/doc/api-documentation/html/thmlvariants_8h-source.html
new file mode 100644
index 0000000..3f06bbd
--- /dev/null
+++ b/doc/api-documentation/html/thmlvariants_8h-source.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>thmlvariants.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>thmlvariants.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018
+00019 <font class="preprocessor">#ifndef THMLVARIANTS_H</font>
+00020 <font class="preprocessor"></font><font class="preprocessor">#define THMLVARIANTS_H</font>
+00021 <font class="preprocessor"></font>
+00022 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00023 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_th_m_l_variants.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_th_m_l_variants.html">ThMLVariants</a> : <font class="keyword">public</font> SWFilter
+00030 {
+00031 <font class="keywordtype">char</font> option;
+00032
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> primary[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> secondary[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> all[];
+00036
+00037 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00038 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00039 OptionsList options;
+00040
+00041 <font class="keyword">public</font>:
+00042 <a class="code" href="class_th_m_l_variants.html">ThMLVariants</a> ();
+00043 <font class="keyword">virtual</font> ~ ThMLVariants ();
+00044 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00045 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00046 {
+00047 <font class="keywordflow">return</font> optName;
+00048 }
+00049 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00050 {
+00051 <font class="keywordflow">return</font> optTip;
+00052 }
+00053 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00054 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00055 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00056 {
+00057 <font class="keywordflow">return</font> options;
+00058 }
+00059 };
+00060
+00061 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/treekey_8cpp-source.html b/doc/api-documentation/html/treekey_8cpp-source.html
new file mode 100644
index 0000000..6232476
--- /dev/null
+++ b/doc/api-documentation/html/treekey_8cpp-source.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>treekey.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>treekey.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * versekey.h - code for class 'versekey'- a standard Biblical verse key</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: treekey_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022
+00023 <font class="preprocessor">#include &lt;treekey.h&gt;</font>
+00024
+00025 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *classes[] = {<font class="stringliteral">"TreeKey"</font>, <font class="stringliteral">"SWKey"</font>, <font class="stringliteral">"SWObject"</font>, 0};
+00026 <a class="code" href="class_s_w_class.html">SWClass</a> TreeKey::classdef(classes);
+00027
+00028 <font class="keywordtype">void</font> TreeKey::init() {
+00029 myclass = &amp;classdef;
+00030 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/treekey_8h-source.html b/doc/api-documentation/html/treekey_8h-source.html
new file mode 100644
index 0000000..d7d6da7
--- /dev/null
+++ b/doc/api-documentation/html/treekey_8h-source.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>treekey.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>treekey.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * versekey.h - code for class 'versekey'- a standard Biblical verse key</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: treekey_8h-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022
+00023 <font class="preprocessor">#ifndef TREEKEY_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define TREEKEY_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swmacs.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00031
+<a name="l00036"></a><a class="code" href="class_tree_key.html">00036</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_tree_key.html">TreeKey</a> : <font class="keyword">public</font> <a class="code" href="class_s_w_key.html">SWKey</a> {
+00037 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
+00038 <font class="keywordtype">void</font> init();
+00039
+00040 <font class="keyword">public</font>:
+00041 <font class="comment">// TreeKey (const char *ikey = 0);</font>
+00042 <font class="comment">// TreeKey (const SWKey * ikey);</font>
+00043 <font class="comment">// TreeKey (TreeKey const &amp;k);</font>
+00044 <a class="code" href="class_tree_key.html">TreeKey</a> () { init(); };
+00045 ~<a class="code" href="class_tree_key.html">TreeKey</a> () {};
+00046
+00047
+00048 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getLocalName() = 0;
+00049 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *setLocalName(<font class="keyword">const</font> <font class="keywordtype">char</font> *) = 0;
+00050
+00051 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getUserData(<font class="keywordtype">int</font> *size = 0) = 0;
+00052 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setUserData(<font class="keyword">const</font> <font class="keywordtype">char</font> *userData, <font class="keywordtype">int</font> size = 0) = 0;
+00053
+00054 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getFullName() <font class="keyword">const</font> = 0;
+00055
+00056 <font class="keyword">virtual</font> <font class="keywordtype">void</font> root() = 0;
+00057 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> parent() = 0;
+00058
+00059 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> firstChild() = 0;
+00060 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> nextSibling() = 0;
+00061 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> previousSibling() = 0;
+00062
+00063 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> hasChildren() = 0;
+00064
+00065 <font class="keyword">virtual</font> <font class="keywordtype">void</font> append() = 0;
+00066 <font class="keyword">virtual</font> <font class="keywordtype">void</font> appendChild() = 0;
+00067 <font class="keyword">virtual</font> <font class="keywordtype">void</font> insertBefore() = 0;
+00068
+00069 <font class="keyword">virtual</font> <font class="keywordtype">void</font> remove() = 0;
+00070
+00071 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOffset(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset) = 0;
+00072 <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getOffset() <font class="keyword">const</font> = 0;
+00073
+00074 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a7">setText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey) = 0;
+00075 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setPosition(SW_POSITION p) = 0;
+00076 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_key.html#a9">getText</a>() <font class="keyword">const</font> = 0;
+00077 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_s_w_key.html#a11">compare</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) = 0;
+00078 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a14">decrement</a>(<font class="keywordtype">int</font> steps = 1) = 0;
+00079 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a15">increment</a>(<font class="keywordtype">int</font> steps = 1) = 0;
+00080 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Traversable () { <font class="keywordflow">return</font> 1; }
+<a name="l00081"></a><a class="code" href="class_tree_key.html#a26">00081</a> <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a17">Index</a> ()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> getOffset(); }
+00082 <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a17">Index</a> (<font class="keywordtype">long</font> iindex) { setOffset(iindex); <font class="keywordflow">return</font> getOffset(); }
+00083
+00084 SWKEY_OPERATORS
+00085
+00086 };
+00087
+00088
+00089 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/treekeyidx_8cpp-source.html b/doc/api-documentation/html/treekeyidx_8cpp-source.html
new file mode 100644
index 0000000..bb88f5b
--- /dev/null
+++ b/doc/api-documentation/html/treekeyidx_8cpp-source.html
@@ -0,0 +1,604 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>treekeyidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>treekeyidx.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * versekey.h - code for class 'versekey'- a standard Biblical verse key</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: treekeyidx_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022
+00023 <font class="preprocessor">#include &lt;treekeyidx.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;string&gt;</font>
+00028
+00029 <font class="preprocessor">#ifndef __GNUC__</font>
+00030 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00031 <font class="preprocessor">#else</font>
+00032 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00033 <font class="preprocessor">#endif</font>
+00034 <font class="preprocessor"></font>
+00035 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00036 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> nl = <font class="charliteral">'\n'</font>;
+00037 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *classes[] = {<font class="stringliteral">"TreeKeyIdx"</font>, <font class="stringliteral">"TreeKey"</font>, <font class="stringliteral">"SWKey"</font>, <font class="stringliteral">"SWObject"</font>, 0};
+00038 <a class="code" href="class_s_w_class.html">SWClass</a> TreeKeyIdx::classdef(classes);
+00039
+00040
+00041 TreeKeyIdx::TreeKeyIdx(<font class="keyword">const</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> &amp;ikey) : currentNode() {
+00042 init();
+00043 path = 0;
+00044 idxfd = 0;
+00045 datfd = 0;
+00046 <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(ikey);
+00047 }
+00048
+00049 TreeKeyIdx::TreeKeyIdx(<font class="keyword">const</font> <font class="keywordtype">char</font> *idxPath, <font class="keywordtype">int</font> fileMode) : currentNode() {
+00050 <font class="keywordtype">char</font> buf[127];
+00051
+00052 init();
+00053 path = 0;
+00054 stdstr(&amp;path, idxPath);
+00055
+00056 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00057 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00058 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00059 <font class="preprocessor"></font>
+00060 <font class="keywordflow">if</font> (fileMode == -1) { <font class="comment">// try read/write if possible</font>
+00061 fileMode = O_RDWR;
+00062 }
+00063
+00064 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00065 idxfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00066 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00067 datfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00068
+00069 <font class="keywordflow">if</font> (datfd &lt;= 0) {
+00070 sprintf(buf, <font class="stringliteral">"Error: %d"</font>, errno);
+00071 perror(buf);
+00072 error = errno;
+00073 }
+00074 <font class="keywordflow">else</font> {
+00075 root();
+00076 }
+00077 }
+00078
+00079
+00080 <font class="keywordtype">void</font> TreeKeyIdx::init() {
+00081 myclass = &amp;classdef;
+00082 }
+00083
+00084
+00085 TreeKeyIdx::~TreeKeyIdx () {
+00086 <font class="keywordflow">if</font> (path)
+00087 <font class="keyword">delete</font> [] path;
+00088
+00089 FileMgr::systemFileMgr.close(idxfd);
+00090 FileMgr::systemFileMgr.close(datfd);
+00091 }
+00092
+00093
+00094 <font class="keyword">const</font> <font class="keywordtype">char</font> *TreeKeyIdx::getLocalName() {
+00095 <font class="keywordflow">return</font> currentNode.name;
+00096 }
+00097
+00098
+00099 <font class="keyword">const</font> <font class="keywordtype">char</font> *TreeKeyIdx::getUserData(<font class="keywordtype">int</font> *size) {
+00100 <font class="keywordflow">if</font> (size)
+00101 *size = (int)currentNode.dsize;
+00102 <font class="keywordflow">return</font> currentNode.userData;
+00103 }
+00104
+00105
+00106 <font class="keywordtype">void</font> TreeKeyIdx::setUserData(<font class="keyword">const</font> <font class="keywordtype">char</font> *userData, <font class="keywordtype">int</font> size) {
+00107 <font class="keywordflow">if</font> (currentNode.userData)
+00108 <font class="keyword">delete</font> currentNode.userData;
+00109
+00110 <font class="keywordflow">if</font> (!size)
+00111 size = strlen(userData) + 1;
+00112
+00113 currentNode.userData = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size ];
+00114 memcpy(currentNode.userData, userData, size);
+00115 currentNode.dsize = size;
+00116 }
+00117
+00118 <font class="keyword">const</font> <font class="keywordtype">char</font> *TreeKeyIdx::setLocalName(<font class="keyword">const</font> <font class="keywordtype">char</font> *newName) {
+00119 stdstr(&amp;(currentNode.name), newName);
+00120 <font class="keywordflow">return</font> currentNode.name;
+00121 }
+00122
+00123
+00124 <font class="keywordtype">void</font> TreeKeyIdx::save() {
+00125 saveTreeNode(&amp;currentNode);
+00126 }
+00127
+00128
+00129 <font class="keyword">const</font> <font class="keywordtype">char</font> *TreeKeyIdx::getFullName()<font class="keyword"> const </font>{
+00130 TreeNode parent;
+00131 <font class="keyword">static</font> string fullPath;
+00132 fullPath = currentNode.name;
+00133 parent.parent = currentNode.parent;
+00134 <font class="keywordflow">while</font> (parent.parent &gt; -1) {
+00135 getTreeNodeFromIdxOffset(parent.parent, &amp;parent);
+00136 fullPath = ((string)parent.name) + (string) <font class="stringliteral">"/"</font> + fullPath;
+00137 }
+00138 <font class="keywordflow">return</font> fullPath.c_str();
+00139 }
+00140
+00141
+00142 <font class="keywordtype">void</font> TreeKeyIdx::root() {
+00143 error = getTreeNodeFromIdxOffset(0, &amp;currentNode);
+00144 }
+00145
+00146
+00147 <font class="keywordtype">bool</font> TreeKeyIdx::parent() {
+00148 <font class="keywordflow">if</font> (currentNode.parent &gt; -1) {
+00149 error = getTreeNodeFromIdxOffset(currentNode.parent, &amp;currentNode);
+00150 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00151 }
+00152 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00153 }
+00154
+00155
+00156 <font class="keywordtype">bool</font> TreeKeyIdx::firstChild() {
+00157 <font class="keywordflow">if</font> (currentNode.firstChild &gt; -1) {
+00158 error = getTreeNodeFromIdxOffset(currentNode.firstChild, &amp;currentNode);
+00159 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00160 }
+00161 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00162 }
+00163
+00164
+00165 <font class="keywordtype">bool</font> TreeKeyIdx::nextSibling() {
+00166 <font class="keywordflow">if</font> (currentNode.next &gt; -1) {
+00167 error = getTreeNodeFromIdxOffset(currentNode.next, &amp;currentNode);
+00168 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00169 }
+00170 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00171 }
+00172
+00173
+00174 <font class="keywordtype">bool</font> TreeKeyIdx::previousSibling() {
+00175 TreeNode iterator;
+00176 __u32 target = currentNode.offset;
+00177 <font class="keywordflow">if</font> (currentNode.parent &gt; -1) {
+00178 getTreeNodeFromIdxOffset(currentNode.parent, &amp;iterator);
+00179 getTreeNodeFromIdxOffset(iterator.firstChild, &amp;iterator);
+00180 <font class="keywordflow">if</font> (iterator.offset != target) {
+00181 <font class="keywordflow">while</font> ((iterator.next != target) &amp;&amp; (iterator.next &gt; -1))
+00182 getTreeNodeFromIdxOffset(iterator.next, &amp;iterator);
+00183 <font class="keywordflow">if</font> (iterator.next &gt; -1) {
+00184 error = getTreeNodeFromIdxOffset(iterator.offset, &amp;currentNode);
+00185 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00186 }
+00187 }
+00188 }
+00189 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00190 }
+00191
+00192
+00193 <font class="keywordtype">bool</font> TreeKeyIdx::hasChildren() {
+00194 <font class="keywordflow">return</font> (currentNode.firstChild &gt; -1);
+00195 }
+00196
+00197
+00198 <font class="keywordtype">void</font> TreeKeyIdx::append() {
+00199 TreeNode lastSib;
+00200 <font class="keywordflow">if</font> (currentNode.offset) {
+00201 getTreeNodeFromIdxOffset(currentNode.offset, &amp;lastSib);
+00202 <font class="keywordflow">while</font> (lastSib.next &gt; -1) {
+00203 getTreeNodeFromIdxOffset(lastSib.next, &amp;lastSib);
+00204 }
+00205 __u32 idxOffset = lseek(idxfd-&gt;getFd(), 0, SEEK_END);
+00206 lastSib.next = idxOffset;
+00207 saveTreeNodeOffsets(&amp;lastSib);
+00208 __u32 parent = currentNode.parent;
+00209 currentNode.clear();
+00210 currentNode.offset = idxOffset;
+00211 currentNode.parent = parent;
+00212 }
+00213 }
+00214
+00215
+00216 <font class="keywordtype">void</font> TreeKeyIdx::appendChild() {
+00217 <font class="keywordflow">if</font> (firstChild()) {
+00218 append();
+00219 }
+00220 <font class="keywordflow">else</font> {
+00221 __u32 idxOffset = lseek(idxfd-&gt;getFd(), 0, SEEK_END);
+00222 currentNode.firstChild = idxOffset;
+00223 saveTreeNodeOffsets(&amp;currentNode);
+00224 __u32 parent = currentNode.offset;
+00225 currentNode.clear();
+00226 currentNode.offset = idxOffset;
+00227 currentNode.parent = parent;
+00228 }
+00229 }
+00230
+00231
+00232 <font class="keywordtype">void</font> TreeKeyIdx::insertBefore() {
+00233 }
+00234
+00235
+00236 <font class="keywordtype">void</font> TreeKeyIdx::remove() {
+00237 }
+00238
+00239
+00240 <font class="comment">/******************************************************************************</font>
+00241 <font class="comment"> * TreeKeyIdx::Create - Creates new key idx/dat files</font>
+00242 <font class="comment"> *</font>
+00243 <font class="comment"> * ENT: path - directory to store module files</font>
+00244 <font class="comment"> * RET: error status</font>
+00245 <font class="comment"> */</font>
+00246
+00247 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> TreeKeyIdx::create(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath) {
+00248 <font class="keywordtype">char</font> *path = 0;
+00249 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00250 FileDesc *fd, *fd2;
+00251
+00252 stdstr(&amp;path, ipath);
+00253
+00254 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00255 path[strlen(path)-1] = 0;
+00256
+00257 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00258 unlink(buf);
+00259 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00260 fd-&gt;getFd();
+00261 FileMgr::systemFileMgr.close(fd);
+00262
+00263 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00264 unlink(buf);
+00265 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00266 fd2-&gt;getFd();
+00267 FileMgr::systemFileMgr.close(fd2);
+00268
+00269 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> newTree(path);
+00270 TreeKeyIdx::TreeNode root;
+00271 stdstr(&amp;(root.name), <font class="stringliteral">""</font>);
+00272 newTree.<a class="code" href="class_tree_key_idx.html#c2">saveTreeNode</a>(&amp;root);
+00273
+00274 <font class="keyword">delete</font> [] path;
+00275
+00276 <font class="keywordflow">return</font> 0;
+00277 }
+00278
+00279
+00280 <font class="comment">/******************************************************************************</font>
+00281 <font class="comment"> * zStr::getidxbufdat - Gets the index string at the given dat offset</font>
+00282 <font class="comment"> * NOTE: buf is calloc'd, or if not null, realloc'd and must</font>
+00283 <font class="comment"> * be free'd by calling function</font>
+00284 <font class="comment"> *</font>
+00285 <font class="comment"> * ENT: ioffset - offset in dat file to lookup</font>
+00286 <font class="comment"> * node - address of pointer to allocate for storage of string</font>
+00287 <font class="comment"> */</font>
+00288
+00289 <font class="keywordtype">void</font> TreeKeyIdx::getTreeNodeFromDatOffset(<font class="keywordtype">long</font> ioffset, TreeNode *node)<font class="keyword"> const </font>{
+00290 <font class="keywordtype">char</font> ch;
+00291 __s32 tmp;
+00292 __u16 tmp2;
+00293
+00294 <font class="keywordflow">if</font> (datfd &gt; 0) {
+00295
+00296 lseek(datfd-&gt;getFd(), ioffset, SEEK_SET);
+00297
+00298 read(datfd-&gt;getFd(), &amp;tmp, 4);
+00299 node-&gt;parent = swordtoarch32(tmp);
+00300
+00301 read(datfd-&gt;getFd(), &amp;tmp, 4);
+00302 node-&gt;next = swordtoarch32(tmp);
+00303
+00304 read(datfd-&gt;getFd(), &amp;tmp, 4);
+00305 node-&gt;firstChild = swordtoarch32(tmp);
+00306
+00307 string name;
+00308 <font class="keywordflow">do</font> {
+00309 read(datfd-&gt;getFd(), &amp;ch, 1);
+00310 name += ch;
+00311 } <font class="keywordflow">while</font> (ch);
+00312
+00313 stdstr(&amp;(node-&gt;name), name.c_str());
+00314
+00315 read(datfd-&gt;getFd(), &amp;tmp2, 2);
+00316 node-&gt;dsize = swordtoarch16(tmp2);
+00317
+00318 <font class="keywordflow">if</font> (node-&gt;dsize) {
+00319 <font class="keywordflow">if</font> (node-&gt;userData)
+00320 <font class="keyword">delete</font> [] node-&gt;userData;
+00321 node-&gt;userData = <font class="keyword">new</font> <font class="keywordtype">char</font> [node-&gt;dsize];
+00322 read(datfd-&gt;getFd(), node-&gt;userData, node-&gt;dsize);
+00323 }
+00324 }
+00325 }
+00326
+00327
+00328 <font class="comment">/******************************************************************************</font>
+00329 <font class="comment"> * zStr::getidxbuf - Gets the index string at the given idx offset</font>
+00330 <font class="comment"> * NOTE: buf is calloc'd, or if not null, realloc'd</font>
+00331 <font class="comment"> * and must be freed by calling function</font>
+00332 <font class="comment"> *</font>
+00333 <font class="comment"> * ENT: ioffset - offset in idx file to lookup</font>
+00334 <font class="comment"> * buf - address of pointer to allocate for storage of string</font>
+00335 <font class="comment"> */</font>
+00336
+00337 <font class="keywordtype">char</font> TreeKeyIdx::getTreeNodeFromIdxOffset(<font class="keywordtype">long</font> ioffset, TreeNode *node)<font class="keyword"> const </font>{
+00338 __u32 offset;
+00339 <font class="keywordtype">char</font> error = 0;
+00340
+00341 <font class="keywordflow">if</font> (ioffset &lt; 0) {
+00342 ioffset = 0;
+00343 error = KEYERR_OUTOFBOUNDS;
+00344 }
+00345
+00346 node-&gt;offset = ioffset;
+00347 <font class="keywordflow">if</font> (idxfd &gt; 0) {
+00348 lseek(idxfd-&gt;getFd(), ioffset, SEEK_SET);
+00349 <font class="keywordflow">if</font> (read(idxfd-&gt;getFd(), &amp;offset, 4) == 4) {
+00350 offset = swordtoarch32(offset);
+00351 getTreeNodeFromDatOffset(offset, node);
+00352 }
+00353 <font class="keywordflow">else</font> {
+00354 lseek(idxfd-&gt;getFd(), -4, SEEK_END);
+00355 <font class="keywordflow">if</font> (read(idxfd-&gt;getFd(), &amp;offset, 4) == 4) {
+00356 offset = swordtoarch32(offset);
+00357 getTreeNodeFromDatOffset(offset, node);
+00358 }
+00359 error = KEYERR_OUTOFBOUNDS;
+00360 }
+00361 }
+00362 <font class="keywordflow">return</font> error;
+00363 }
+00364
+00365
+00366 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> TreeKeyIdx::getOffset()<font class="keyword"> const </font>{
+00367 <font class="keywordflow">return</font> currentNode.offset;
+00368 }
+00369
+00370 <font class="keywordtype">void</font> TreeKeyIdx::setOffset(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset) {
+00371 error = getTreeNodeFromIdxOffset(offset, &amp;currentNode);
+00372 }
+00373
+00374
+00375 <font class="keywordtype">void</font> TreeKeyIdx::saveTreeNodeOffsets(TreeNode *node) {
+00376 <font class="keywordtype">long</font> datOffset = 0;
+00377 __s32 tmp;
+00378
+00379 <font class="keywordflow">if</font> (idxfd &gt; 0) {
+00380 lseek(idxfd-&gt;getFd(), node-&gt;offset, SEEK_SET);
+00381 <font class="keywordflow">if</font> (read(idxfd-&gt;getFd(), &amp;tmp, 4) != 4) {
+00382 datOffset = lseek(datfd-&gt;getFd(), 0, SEEK_END);
+00383 tmp = archtosword32(datOffset);
+00384 write(idxfd-&gt;getFd(), &amp;tmp, 4);
+00385 }
+00386 <font class="keywordflow">else</font> {
+00387 datOffset = swordtoarch32(tmp);
+00388 lseek(datfd-&gt;getFd(), datOffset, SEEK_SET);
+00389 }
+00390
+00391 tmp = archtosword32(node-&gt;parent);
+00392 write(datfd-&gt;getFd(), &amp;tmp, 4);
+00393
+00394 tmp = archtosword32(node-&gt;next);
+00395 write(datfd-&gt;getFd(), &amp;tmp, 4);
+00396
+00397 tmp = archtosword32(node-&gt;firstChild);
+00398 write(datfd-&gt;getFd(), &amp;tmp, 4);
+00399 }
+00400 }
+00401
+00402
+00403 <font class="keywordtype">void</font> <a class="code" href="class_tree_key_idx.html#a20">TreeKeyIdx::copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> &amp;ikey) {
+00404
+00405 <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey);
+00406
+00407 currentNode.offset = ikey.<a class="code" href="class_tree_key_idx.html#o0">currentNode</a>.offset;
+00408 currentNode.parent = ikey.<a class="code" href="class_tree_key_idx.html#o0">currentNode</a>.parent;
+00409 currentNode.next = ikey.<a class="code" href="class_tree_key_idx.html#o0">currentNode</a>.next;
+00410 currentNode.firstChild = ikey.<a class="code" href="class_tree_key_idx.html#o0">currentNode</a>.firstChild;
+00411 stdstr(&amp;(currentNode.name), ikey.<a class="code" href="class_tree_key_idx.html#o0">currentNode</a>.name);
+00412 currentNode.dsize = ikey.<a class="code" href="class_tree_key_idx.html#o0">currentNode</a>.dsize;
+00413
+00414 <font class="keywordflow">if</font> (currentNode.userData)
+00415 <font class="keyword">delete</font> [] currentNode.userData;
+00416 <font class="keywordflow">if</font> (currentNode.dsize) {
+00417 currentNode.userData = <font class="keyword">new</font> <font class="keywordtype">char</font> [ currentNode.dsize ];
+00418 memcpy(currentNode.userData, ikey.<a class="code" href="class_tree_key_idx.html#o0">currentNode</a>.userData, currentNode.dsize);
+00419 }
+00420 <font class="keywordflow">else</font> currentNode.userData = 0;
+00421
+00422 <font class="keywordtype">bool</font> newFiles = <font class="keyword">true</font>;
+00423
+00424 <font class="keywordflow">if</font> (path &amp;&amp; ikey.<a class="code" href="class_tree_key_idx.html#o1">path</a>)
+00425 newFiles = strcmp(path, ikey.<a class="code" href="class_tree_key_idx.html#o1">path</a>);
+00426
+00427 <font class="keywordflow">if</font> (newFiles) {
+00428 stdstr(&amp;path, ikey.<a class="code" href="class_tree_key_idx.html#o1">path</a>);
+00429
+00430 <font class="keywordflow">if</font> (idxfd) {
+00431 FileMgr::systemFileMgr.close(idxfd);
+00432 FileMgr::systemFileMgr.close(datfd);
+00433 }
+00434 idxfd = FileMgr::systemFileMgr.open(ikey.<a class="code" href="class_tree_key_idx.html#o2">idxfd</a>-&gt;path, ikey.<a class="code" href="class_tree_key_idx.html#o2">idxfd</a>-&gt;mode, ikey.<a class="code" href="class_tree_key_idx.html#o2">idxfd</a>-&gt;perms);
+00435 datfd = FileMgr::systemFileMgr.open(ikey.<a class="code" href="class_tree_key_idx.html#o3">datfd</a>-&gt;path, ikey.<a class="code" href="class_tree_key_idx.html#o3">datfd</a>-&gt;mode, ikey.<a class="code" href="class_tree_key_idx.html#o3">datfd</a>-&gt;perms);
+00436 }
+00437 }
+00438
+00439
+00440 <font class="keywordtype">void</font> TreeKeyIdx::saveTreeNode(TreeNode *node) {
+00441 <font class="keywordtype">long</font> datOffset = 0;
+00442 __s32 tmp;
+00443 <font class="keywordflow">if</font> (idxfd &gt; 0) {
+00444
+00445 lseek(idxfd-&gt;getFd(), node-&gt;offset, SEEK_SET);
+00446 datOffset = lseek(datfd-&gt;getFd(), 0, SEEK_END);
+00447 tmp = archtosword32(datOffset);
+00448 write(idxfd-&gt;getFd(), &amp;tmp, 4);
+00449
+00450 saveTreeNodeOffsets(node);
+00451
+00452 write(datfd-&gt;getFd(), node-&gt;name, strlen(node-&gt;name));
+00453 <font class="keywordtype">char</font> null = 0;
+00454 write(datfd-&gt;getFd(), &amp;null, 1);
+00455
+00456 __u16 tmp2 = archtosword16(node-&gt;dsize);
+00457 write(datfd-&gt;getFd(), &amp;tmp2, 2);
+00458
+00459 <font class="keywordflow">if</font> (node-&gt;dsize) {
+00460 write(datfd-&gt;getFd(), node-&gt;userData, node-&gt;dsize);
+00461 }
+00462 }
+00463 }
+00464
+00465
+<a name="l00466"></a><a class="code" href="class_tree_key_idx.html#a24">00466</a> <font class="keywordtype">void</font> <a class="code" href="class_tree_key_idx.html#a24">TreeKeyIdx::setText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey) {
+00467 <font class="keywordtype">char</font> *buf = 0;
+00468 stdstr(&amp;buf, ikey);
+00469 <font class="keywordtype">char</font> *leaf = strtok(buf, <font class="stringliteral">"/"</font>);
+00470 root();
+00471 <font class="keywordflow">while</font> ((leaf) &amp;&amp; (!<a class="code" href="class_s_w_key.html#a6">Error</a>())) {
+00472 <font class="keywordtype">bool</font> ok, inChild = <font class="keyword">false</font>;
+00473 <font class="keywordflow">for</font> (ok = firstChild(); ok; ok = nextSibling()) {
+00474 inChild = <font class="keyword">true</font>;
+00475 <font class="keywordflow">if</font> (!stricmp(leaf, getLocalName()))
+00476 <font class="keywordflow">break</font>;
+00477 }
+00478 leaf = strtok(0, <font class="stringliteral">"/"</font>);
+00479 <font class="keywordflow">if</font> (!ok) {
+00480 <font class="keywordflow">if</font> (inChild) { <font class="comment">// if we didn't find a matching child node, default to first child</font>
+00481 parent();
+00482 firstChild();
+00483 }
+00484 <font class="keywordflow">if</font> (leaf)
+00485 error = KEYERR_OUTOFBOUNDS;
+00486 <font class="keywordflow">break</font>;
+00487 }
+00488 }
+00489 <font class="keyword">delete</font> [] buf;
+00490 }
+00491
+00492
+00493
+<a name="l00494"></a><a class="code" href="class_tree_key_idx.html#a20">00494</a> <font class="keywordtype">void</font> <a class="code" href="class_tree_key_idx.html#a20">TreeKeyIdx::copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) {
+00495 <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey);
+00496 }
+00497
+00498 <font class="keywordtype">void</font> TreeKeyIdx::setPosition(SW_POSITION p) {
+00499 <font class="keywordflow">switch</font> (p) {
+00500 <font class="keywordflow">case</font> POS_TOP:
+00501 root();
+00502 <font class="keywordflow">break</font>;
+00503 <font class="keywordflow">case</font> POS_BOTTOM:
+00504 error = getTreeNodeFromIdxOffset(lseek(idxfd-&gt;getFd(), -4, SEEK_END), &amp;currentNode);
+00505 <font class="keywordflow">break</font>;
+00506 }
+00507 <a class="code" href="class_s_w_key.html#a6">Error</a>(); <font class="comment">// clear error from normalize</font>
+00508 }
+00509
+<a name="l00510"></a><a class="code" href="class_tree_key_idx.html#a26">00510</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_tree_key_idx.html#a26">TreeKeyIdx::getText</a>()<font class="keyword"> const </font>{
+00511 <font class="keywordflow">return</font> getFullName();
+00512 }
+00513
+00514
+00515 <font class="keywordtype">int</font> TreeKeyIdx::_compare (<font class="keyword">const</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> &amp; ikey) {
+00516 <font class="keywordflow">return</font> (getOffset() - ikey.<a class="code" href="class_tree_key_idx.html#a23">getOffset</a>());
+00517 }
+00518
+00519
+<a name="l00520"></a><a class="code" href="class_tree_key_idx.html#a28">00520</a> <font class="keywordtype">int</font> <a class="code" href="class_tree_key_idx.html#a28">TreeKeyIdx::compare</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) {
+00521 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> *treeKey = SWDYNAMIC_CAST(<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a>, (&amp;ikey));
+00522 <font class="keywordflow">if</font> (treeKey)
+00523 <font class="keywordflow">return</font> _compare(*treeKey);
+00524 <font class="keywordflow">return</font> <a class="code" href="class_s_w_key.html#a11">SWKey::compare</a>(ikey);
+00525 }
+00526
+00527
+<a name="l00528"></a><a class="code" href="class_tree_key_idx.html#a29">00528</a> <font class="keywordtype">void</font> <a class="code" href="class_tree_key_idx.html#a29">TreeKeyIdx::decrement</a>(<font class="keywordtype">int</font> steps) {
+00529 error = getTreeNodeFromIdxOffset(currentNode.offset - (4*steps), &amp;currentNode);
+00530 }
+00531
+<a name="l00532"></a><a class="code" href="class_tree_key_idx.html#a30">00532</a> <font class="keywordtype">void</font> <a class="code" href="class_tree_key_idx.html#a30">TreeKeyIdx::increment</a>(<font class="keywordtype">int</font> steps) {
+00533 error = getTreeNodeFromIdxOffset(currentNode.offset + (4*steps), &amp;currentNode);
+00534
+00535 <font class="comment">/*</font>
+00536 <font class="comment"> // assert positive</font>
+00537 <font class="comment"> if (steps &lt; 0) {</font>
+00538 <font class="comment"> decrement(steps * -1);</font>
+00539 <font class="comment"> return;</font>
+00540 <font class="comment"> }</font>
+00541 <font class="comment"></font>
+00542 <font class="comment"> while (steps &gt; 0) {</font>
+00543 <font class="comment"> if (!firstChild()) {</font>
+00544 <font class="comment"> if (!nextSibbling() {</font>
+00545 <font class="comment"> error = KEYERR_OUTOFBOUNDS;</font>
+00546 <font class="comment"> return;</font>
+00547 <font class="comment"> }</font>
+00548 <font class="comment"> }</font>
+00549 <font class="comment"> steps--;</font>
+00550 <font class="comment"> }</font>
+00551 <font class="comment">*/</font>
+00552 }
+00553
+00554
+00555
+00556 TreeKeyIdx::TreeNode::TreeNode() {
+00557
+00558 name = 0;
+00559 stdstr(&amp;name, <font class="stringliteral">""</font>);
+00560 userData = 0;
+00561
+00562 clear();
+00563 }
+00564
+00565
+00566 <font class="keywordtype">void</font> TreeKeyIdx::TreeNode::clear() {
+00567 offset = 0;
+00568 parent = -1;
+00569 next = -1;
+00570 firstChild = -1;
+00571 dsize = 0;
+00572
+00573 <font class="keywordflow">if</font> (name)
+00574 <font class="keyword">delete</font> [] name;
+00575 name = 0;
+00576 stdstr(&amp;name, <font class="stringliteral">""</font>);
+00577
+00578 <font class="keywordflow">if</font> (userData)
+00579 <font class="keyword">delete</font> [] userData;
+00580 userData = 0;
+00581 }
+00582
+00583
+00584 TreeKeyIdx::TreeNode::~TreeNode() {
+00585 <font class="keywordflow">if</font> (name)
+00586 <font class="keyword">delete</font> [] name;
+00587
+00588 <font class="keywordflow">if</font> (userData)
+00589 <font class="keyword">delete</font> [] userData;
+00590 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/treekeyidx_8h-source.html b/doc/api-documentation/html/treekeyidx_8h-source.html
new file mode 100644
index 0000000..997f9c2
--- /dev/null
+++ b/doc/api-documentation/html/treekeyidx_8h-source.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>treekeyidx.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>treekeyidx.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * versekey.h - code for class 'versekey'- a standard Biblical verse key</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: treekeyidx_8h-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022
+00023 <font class="preprocessor">#ifndef TREEKEYIDX_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define TREEKEYIDX_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;treekey.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;sysdata.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00029
+00030
+<a name="l00035"></a><a class="code" href="class_tree_key_idx.html">00035</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> : <font class="keyword">public</font> <a class="code" href="class_tree_key.html">TreeKey</a> {
+00036
+00037 <font class="keyword">class </font>TreeNode {
+00038 <font class="keyword">public</font>:
+00039 TreeNode();
+00040 ~TreeNode();
+00041 <font class="keywordtype">void</font> clear();
+00042 __u32 offset;
+00043 __s32 parent;
+00044 __s32 next;
+00045 __s32 firstChild;
+00046 <font class="keywordtype">char</font> *name;
+00047 __u16 dsize;
+00048 <font class="keywordtype">char</font> *userData;
+00049 } currentNode;
+00050
+00051 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
+00052
+00053 <font class="keywordtype">char</font> *path;
+00054
+00055 FileDesc *idxfd;
+00056 FileDesc *datfd;
+00057
+00058 <font class="keywordtype">void</font> getTreeNodeFromDatOffset(<font class="keywordtype">long</font> ioffset, TreeNode *buf) <font class="keyword">const</font>;
+00059 <font class="keywordtype">char</font> getTreeNodeFromIdxOffset(<font class="keywordtype">long</font> ioffset, TreeNode *node) <font class="keyword">const</font>;
+00060 <font class="keywordtype">void</font> saveTreeNode(TreeNode *node);
+00061 <font class="keywordtype">void</font> saveTreeNodeOffsets(TreeNode *node);
+00062 <font class="keywordtype">void</font> init();
+00063
+00064 <font class="keyword">public</font>:
+00065 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a>(<font class="keyword">const</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> &amp;ikey);
+00066 <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *idxPath, <font class="keywordtype">int</font> fileMode = -1);
+00067 ~<a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> ();
+00068
+00069
+00070 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getLocalName();
+00071 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *setLocalName(<font class="keyword">const</font> <font class="keywordtype">char</font> *);
+00072
+00073 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getUserData(<font class="keywordtype">int</font> *size = 0);
+00074 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setUserData(<font class="keyword">const</font> <font class="keywordtype">char</font> *userData, <font class="keywordtype">int</font> size = 0);
+00075
+00076 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getFullName() <font class="keyword">const</font>;
+00077
+00078 <font class="keyword">virtual</font> <font class="keywordtype">void</font> root();
+00079 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> parent();
+00080
+00081 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> firstChild();
+00082 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> nextSibling();
+00083 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> previousSibling();
+00084
+00085 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> hasChildren();
+00086
+00087 <font class="keyword">virtual</font> <font class="keywordtype">void</font> append();
+00088 <font class="keyword">virtual</font> <font class="keywordtype">void</font> appendChild();
+00089 <font class="keyword">virtual</font> <font class="keywordtype">void</font> insertBefore();
+00090
+00091 <font class="keyword">virtual</font> <font class="keywordtype">void</font> remove();
+00092 <font class="keyword">virtual</font> <font class="keywordtype">void</font> save();
+00093
+00094 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> &amp;ikey);
+00095 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; ikey);
+00096
+00097 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;operator = (<font class="keyword">const</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> &amp;ikey) { <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(ikey); <font class="keywordflow">return</font> *<font class="keyword">this</font>; }
+00098 <font class="keywordtype">void</font> setOffset(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> offset);
+00099 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getOffset() <font class="keyword">const</font>;
+00100
+00101 SWKEY_OPERATORS
+00102
+00103 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_tree_key.html#a19">setText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey);
+00104 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setPosition(SW_POSITION p);
+00105 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_tree_key.html#a21">getText</a>() <font class="keyword">const</font>;
+00106 <font class="keyword">virtual</font> <font class="keywordtype">int</font> _compare (<font class="keyword">const</font> <a class="code" href="class_tree_key_idx.html">TreeKeyIdx</a> &amp; ikey);
+00107 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_tree_key.html#a22">compare</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey);
+00108 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_tree_key.html#a23">decrement</a>(<font class="keywordtype">int</font> steps = 1);
+00109 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_tree_key.html#a24">increment</a>(<font class="keywordtype">int</font> steps = 1);
+00110 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Traversable () { <font class="keywordflow">return</font> 1; }
+00111
+00112 <font class="keyword">static</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> create(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
+00113 };
+00114
+00115
+00116 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/trees_8h-source.html b/doc/api-documentation/html/trees_8h-source.html
new file mode 100644
index 0000000..813d5ef
--- /dev/null
+++ b/doc/api-documentation/html/trees_8h-source.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>trees.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>trees.h</h1><div class="fragment"><pre>00001 <font class="comment">/* header created automatically with -DGEN_TREES_H */</font>
+00002
+00003 local <font class="keyword">const</font> ct_data static_ltree[L_CODES+2] = {
+00004 {{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}},
+00005 {{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}},
+00006 {{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}},
+00007 {{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}},
+00008 {{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}},
+00009 {{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}},
+00010 {{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}},
+00011 {{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}},
+00012 {{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}},
+00013 {{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}},
+00014 {{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}},
+00015 {{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}},
+00016 {{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}},
+00017 {{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}},
+00018 {{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}},
+00019 {{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}},
+00020 {{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}},
+00021 {{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}},
+00022 {{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}},
+00023 {{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}},
+00024 {{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}},
+00025 {{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}},
+00026 {{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}},
+00027 {{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}},
+00028 {{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}},
+00029 {{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}},
+00030 {{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}},
+00031 {{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}},
+00032 {{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}},
+00033 {{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}},
+00034 {{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}},
+00035 {{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}},
+00036 {{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}},
+00037 {{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}},
+00038 {{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}},
+00039 {{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}},
+00040 {{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}},
+00041 {{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}},
+00042 {{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}},
+00043 {{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}},
+00044 {{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}},
+00045 {{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}},
+00046 {{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}},
+00047 {{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}},
+00048 {{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}},
+00049 {{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}},
+00050 {{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}},
+00051 {{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}},
+00052 {{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}},
+00053 {{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}},
+00054 {{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}},
+00055 {{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}},
+00056 {{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}},
+00057 {{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}},
+00058 {{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}},
+00059 {{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}},
+00060 {{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}},
+00061 {{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}}
+00062 };
+00063
+00064 local <font class="keyword">const</font> ct_data static_dtree[D_CODES] = {
+00065 {{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}},
+00066 {{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}},
+00067 {{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}},
+00068 {{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}},
+00069 {{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}},
+00070 {{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
+00071 };
+00072
+00073 <font class="keyword">const</font> uch _dist_code[DIST_CODE_LEN] = {
+00074 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
+00075 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
+00076 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+00077 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+00078 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
+00079 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+00080 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+00081 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+00082 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+00083 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
+00084 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+00085 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+00086 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17,
+00087 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
+00088 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+00089 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+00090 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+00091 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
+00092 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+00093 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+00094 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+00095 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+00096 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+00097 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+00098 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+00099 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
+00100 };
+00101
+00102 <font class="keyword">const</font> uch _length_code[MAX_MATCH-MIN_MATCH+1]= {
+00103 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12,
+00104 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
+00105 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
+00106 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+00107 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
+00108 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
+00109 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+00110 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+00111 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+00112 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
+00113 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+00114 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+00115 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
+00116 };
+00117
+00118 local <font class="keyword">const</font> <font class="keywordtype">int</font> base_length[LENGTH_CODES] = {
+00119 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
+00120 64, 80, 96, 112, 128, 160, 192, 224, 0
+00121 };
+00122
+00123 local <font class="keyword">const</font> <font class="keywordtype">int</font> base_dist[D_CODES] = {
+00124 0, 1, 2, 3, 4, 6, 8, 12, 16, 24,
+00125 32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
+00126 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576
+00127 };
+00128
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/unicodertf_8cpp-source.html b/doc/api-documentation/html/unicodertf_8cpp-source.html
new file mode 100644
index 0000000..6b2fd2c
--- /dev/null
+++ b/doc/api-documentation/html/unicodertf_8cpp-source.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>unicodertf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>unicodertf.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * unicodertf - SWFilter decendant to convert a double byte unicode file</font>
+00004 <font class="comment"> * to RTF tags</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;unicodertf.h&gt;</font>
+00011
+00012 UnicodeRTF::UnicodeRTF() {
+00013 }
+00014
+00015
+00016 <font class="keywordtype">char</font> UnicodeRTF::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00017 {
+00018 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from, *maxto;
+00019 <font class="keywordtype">int</font> len;
+00020 <font class="keywordtype">char</font> digit[10];
+00021 <font class="keywordtype">short</font> ch; <font class="comment">// must be signed per unicode spec (negative is ok for big numbers &gt; 32768)</font>
+00022
+00023 len = strlenw(text) + 2; <font class="comment">// shift string to right of buffer</font>
+00024 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00025 memmove(&amp;text[maxlen - len], text, len);
+00026 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)&amp;text[maxlen - len];
+00027 }
+00028 <font class="keywordflow">else</font> from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00029 maxto =(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text + maxlen;
+00030
+00031 <font class="comment">// -------------------------------</font>
+00032 <font class="keywordtype">bool</font> lastUni = <font class="keyword">false</font>;
+00033 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; *from &amp;&amp; (to &lt;= maxto); from++) {
+00034 ch = 0;
+00035 <font class="keywordflow">if</font> ((*from &amp; 128) != 128) {
+00036 <font class="comment">// if ((*from == ' ') &amp;&amp; (lastUni))</font>
+00037 <font class="comment">// *to++ = ' ';</font>
+00038 *to++ = *from;
+00039 lastUni = <font class="keyword">false</font>;
+00040 <font class="keywordflow">continue</font>;
+00041 }
+00042 <font class="keywordflow">if</font> ((*from &amp; 128) &amp;&amp; ((*from &amp; 64) != 64)) {
+00043 <font class="comment">// error</font>
+00044 *from = <font class="charliteral">'x'</font>;
+00045 <font class="keywordflow">continue</font>;
+00046 }
+00047 *from &lt;&lt;= 1;
+00048 <font class="keywordtype">int</font> subsequent;
+00049 <font class="keywordflow">for</font> (subsequent = 1; (*from &amp; 128); subsequent++) {
+00050 *from &lt;&lt;= 1;
+00051 from[subsequent] &amp;= 63;
+00052 ch &lt;&lt;= 6;
+00053 ch |= from[subsequent];
+00054 }
+00055 subsequent--;
+00056 *from &lt;&lt;=1;
+00057 <font class="keywordtype">char</font> significantFirstBits = 8 - (2+subsequent);
+00058
+00059 ch |= (((short)*from) &lt;&lt; (((6*subsequent)+significantFirstBits)-8));
+00060 from += subsequent;
+00061 *to++ = <font class="charliteral">'\\'</font>;
+00062 *to++ = <font class="charliteral">'u'</font>;
+00063 sprintf(digit, <font class="stringliteral">"%d"</font>, ch);
+00064 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *dig = digit; *dig; dig++)
+00065 *to++ = *dig;
+00066 *to++ = <font class="charliteral">'?'</font>;
+00067 lastUni = <font class="keyword">true</font>;
+00068 }
+00069
+00070 <font class="keywordflow">if</font> (to != maxto) {
+00071 *to++ = 0;
+00072 }
+00073 *to = 0;
+00074 <font class="keywordflow">return</font> 0;
+00075 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/unicodertf_8h-source.html b/doc/api-documentation/html/unicodertf_8h-source.html
new file mode 100644
index 0000000..9bad1ef
--- /dev/null
+++ b/doc/api-documentation/html/unicodertf_8h-source.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>unicodertf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>unicodertf.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * $Id: unicodertf_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00006 <font class="comment"> * CrossWire Bible Society</font>
+00007 <font class="comment"> * P. O. Box 2528</font>
+00008 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00009 <font class="comment"> *</font>
+00010 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00011 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00012 <font class="comment"> * Free Software Foundation version 2.</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00017 <font class="comment"> * General Public License for more details.</font>
+00018 <font class="comment"> *</font>
+00019 <font class="comment"> */</font>
+00020
+00021 <font class="preprocessor">#ifndef UNICODERTF_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define UNICODERTF_H</font>
+00023 <font class="preprocessor"></font>
+00024 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00025
+00026 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00027
+<a name="l00030"></a><a class="code" href="class_unicode_r_t_f.html">00030</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_unicode_r_t_f.html">UnicodeRTF</a>:<font class="keyword">public</font> SWFilter {
+00031 <font class="keyword">public</font>:
+00032 <a class="code" href="class_unicode_r_t_f.html">UnicodeRTF</a>();
+00033 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00034 };
+00035
+00036 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/unixstr_8cpp-source.html b/doc/api-documentation/html/unixstr_8cpp-source.html
new file mode 100644
index 0000000..809821c
--- /dev/null
+++ b/doc/api-documentation/html/unixstr_8cpp-source.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>unixstr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>unixstr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">// Include only if your UNIX compiler does not include stricmp but does include strcasecmp</font>
+00002
+00003 <font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00004
+00005 <font class="keywordtype">int</font> stricmp(<font class="keyword">const</font> <font class="keywordtype">char</font> *s1, <font class="keyword">const</font> <font class="keywordtype">char</font> *s2) {
+00006 <font class="keywordflow">return</font> strcasecmp(s1, s2);
+00007 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/unixstr_8h-source.html b/doc/api-documentation/html/unixstr_8h-source.html
new file mode 100644
index 0000000..2536d91
--- /dev/null
+++ b/doc/api-documentation/html/unixstr_8h-source.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>unixstr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>unixstr.h</h1><div class="fragment"><pre>00001 <font class="comment">// Include only if your UNIX compiler does not include stricmp but does include strcasecmp</font>
+00002 <font class="comment">/*</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: unixstr_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef UNIXSTR_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define UNIXSTR_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#include &lt;string.h&gt;</font>
+00025
+00026 <font class="keywordtype">int</font> stricmp (<font class="keyword">const</font> <font class="keywordtype">char</font> *s1, <font class="keyword">const</font> <font class="keywordtype">char</font> *s2);
+00027
+00028 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/untgz_8h-source.html b/doc/api-documentation/html/untgz_8h-source.html
new file mode 100644
index 0000000..a209cf7
--- /dev/null
+++ b/doc/api-documentation/html/untgz_8h-source.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>untgz.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>untgz.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef UNTGZ_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define UNTGZ_H</font>
+00003 <font class="preprocessor"></font>
+00004 <font class="preprocessor">#include "zlib.h"</font>
+00005
+00006 <font class="keywordtype">int</font> untargz(<font class="keywordtype">int</font> fd, <font class="keyword">const</font> <font class="keywordtype">char</font> *dest);
+00007 <font class="keywordtype">int</font> untar(gzFile in, <font class="keyword">const</font> <font class="keywordtype">char</font> *dest);
+00008
+00009 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf16utf8_8cpp-source.html b/doc/api-documentation/html/utf16utf8_8cpp-source.html
new file mode 100644
index 0000000..2578fd9
--- /dev/null
+++ b/doc/api-documentation/html/utf16utf8_8cpp-source.html
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf16utf8.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf16utf8.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * UTF16UTF8 - SWFilter decendant to convert UTF-16 to UTF-8</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009
+00010 <font class="preprocessor">#include &lt;utf16utf8.h&gt;</font>
+00011
+00012 UTF16UTF8::UTF16UTF8() {
+00013 }
+00014
+00015
+00016 <font class="keywordtype">char</font> UTF16UTF8::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00017 {
+00018 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *from;
+00019 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to;
+00020
+00021 <font class="keywordtype">int</font> len;
+00022 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> uchar;
+00023 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> schar;
+00024
+00025 len = 0;
+00026 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>*) text;
+00027 <font class="keywordflow">while</font> (*from) {
+00028 len += 2;
+00029 from++;
+00030 }
+00031
+00032 <font class="comment">// shift string to right of buffer</font>
+00033 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00034 memmove(&amp;text[maxlen - len], text, len);
+00035 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>*)&amp;text[maxlen - len];
+00036 }
+00037 <font class="keywordflow">else</font>
+00038 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>*)text;
+00039
+00040
+00041 <font class="comment">// -------------------------------</font>
+00042
+00043 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; *from; from++) {
+00044 uchar = 0;
+00045
+00046 <font class="keywordflow">if</font> (*from &lt; 0xD800 || *from &gt; 0xDFFF) {
+00047 uchar = *from;
+00048 }
+00049 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from &gt;= 0xD800 &amp;&amp; *from &lt;= 0xDBFF) {
+00050 uchar = *from;
+00051 schar = *(from+1);
+00052 <font class="keywordflow">if</font> (uchar &lt; 0xDC00 || uchar &gt; 0xDFFF) {
+00053 <font class="comment">//error, do nothing</font>
+00054 <font class="keywordflow">continue</font>;
+00055 }
+00056 uchar &amp;= 0x03ff;
+00057 schar &amp;= 0x03ff;
+00058 uchar &lt;&lt;= 10;
+00059 uchar |= schar;
+00060 uchar += 0x10000;
+00061 from++;
+00062 }
+00063 <font class="keywordflow">else</font> {
+00064 <font class="comment">//error, do nothing</font>
+00065 <font class="keywordflow">continue</font>;
+00066 }
+00067
+00068 <font class="keywordflow">if</font> (uchar &lt; 0x80) {
+00069 *to++ = uchar;
+00070 }
+00071 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (uchar &lt; 0x800) {
+00072 *to++ = 0xc0 | (uchar &gt;&gt; 6);
+00073 *to++ = 0x80 | (uchar &amp; 0x3f);
+00074 }
+00075 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (uchar &lt; 0x10000) {
+00076 *to++ = 0xe0 | (uchar &gt;&gt; 12);
+00077 *to++ = 0x80 | (uchar &gt;&gt; 6) &amp; 0x3f;
+00078 *to++ = 0x80 | uchar &amp; 0x3f;
+00079 }
+00080 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (uchar &lt; 0x200000) {
+00081 *to++ = 0xF0 | (uchar &gt;&gt; 18);
+00082 *to++ = 0x80 | (uchar &gt;&gt; 12) &amp; 0x3F;
+00083 *to++ = 0x80 | (uchar &gt;&gt; 6) &amp; 0x3F;
+00084 *to++ = 0x80 | uchar &amp; 0x3F;
+00085 }
+00086 }
+00087 *to++ = 0;
+00088 *to = 0;
+00089
+00090 <font class="keywordflow">return</font> 0;
+00091 }
+00092
+00093
+00094
+00095
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf16utf8_8h-source.html b/doc/api-documentation/html/utf16utf8_8h-source.html
new file mode 100644
index 0000000..b858631
--- /dev/null
+++ b/doc/api-documentation/html/utf16utf8_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf16utf8.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf16utf8.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef UTF16UTF8_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF16UTF8_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_u_t_f16_u_t_f8.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a>:<font class="keyword">public</font> SWFilter {
+00030 <font class="keyword">public</font>:
+00031 <a class="code" href="class_u_t_f16_u_t_f8.html">UTF16UTF8</a>();
+00032 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00033 };
+00034
+00035 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8arshaping_8cpp-source.html b/doc/api-documentation/html/utf8arshaping_8cpp-source.html
new file mode 100644
index 0000000..93254de
--- /dev/null
+++ b/doc/api-documentation/html/utf8arshaping_8cpp-source.html
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8arshaping.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8arshaping.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment">*</font>
+00003 <font class="comment">* utf8arshaping - SWFilter decendant to perform Arabic shaping on</font>
+00004 <font class="comment">* UTF-8 text</font>
+00005 <font class="comment">*/</font>
+00006
+00007 <font class="preprocessor">#ifdef _ICU_</font>
+00008 <font class="preprocessor"></font>
+00009 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifdef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;utf8arshaping.h&gt;</font>
+00017
+00018 UTF8arShaping::UTF8arShaping() {
+00019
+00020 conv = ucnv_open(<font class="stringliteral">"UTF-8"</font>, &amp;err);
+00021
+00022 }
+00023
+00024 UTF8arShaping::~UTF8arShaping() {
+00025 ucnv_close(conv);
+00026 }
+00027
+00028 <font class="keywordtype">char</font> UTF8arShaping::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00029 {
+00030 UChar *ustr, *ustr2;
+00031
+00032 int32_t len = strlen(text);
+00033 ustr = <font class="keyword">new</font> UChar[len];
+00034 ustr2 = <font class="keyword">new</font> UChar[len];
+00035
+00036 <font class="comment">// Convert UTF-8 string to UTF-16 (UChars)</font>
+00037 len = ucnv_toUChars(conv, ustr, len, text, -1, &amp;err);
+00038
+00039 len = u_shapeArabic(ustr, len, ustr2, len, U_SHAPE_LETTERS_SHAPE | U_SHAPE_DIGITS_EN2AN, &amp;err);
+00040
+00041 ucnv_fromUChars(conv, text, maxlen, ustr2, len, &amp;err);
+00042
+00043 <font class="keyword">delete</font> [] ustr2;
+00044 <font class="keyword">delete</font> [] ustr;
+00045 <font class="keywordflow">return</font> 0;
+00046 }
+00047
+00048 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8arshaping_8h-source.html b/doc/api-documentation/html/utf8arshaping_8h-source.html
new file mode 100644
index 0000000..24fcb47
--- /dev/null
+++ b/doc/api-documentation/html/utf8arshaping_8h-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8arshaping.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8arshaping.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018 <font class="preprocessor">#ifdef _ICU_</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#ifndef UTF8ARSHAPING_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8ARSHAPING_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;unicode/utypes.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;unicode/ucnv.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;unicode/uchar.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;unicode/ushape.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00034 <font class="keyword">class </font>SWDLLEXPORT UTF8arShaping : <font class="keyword">public</font> SWFilter
+00035 {
+00036 <font class="keyword">private</font>:
+00037 UConverter* conv;
+00038 UErrorCode err;
+00039 <font class="keyword">public</font>:
+00040 UTF8arShaping();
+00041 ~UTF8arShaping();
+00042 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00043 };
+00044
+00045 <font class="preprocessor">#endif</font>
+00046 <font class="preprocessor"></font>
+00047 <font class="preprocessor">#endif</font>
+00048 <font class="preprocessor"></font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8bidireorder_8cpp-source.html b/doc/api-documentation/html/utf8bidireorder_8cpp-source.html
new file mode 100644
index 0000000..dc861ec
--- /dev/null
+++ b/doc/api-documentation/html/utf8bidireorder_8cpp-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8bidireorder.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8bidireorder.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment">*</font>
+00003 <font class="comment">* utf8cnormalizer - SWFilter decendant to perform reordering of UTF-8</font>
+00004 <font class="comment">* text to visual order according to Unicode BiDi</font>
+00005 <font class="comment">*/</font>
+00006
+00007 <font class="preprocessor">#ifdef _ICU_</font>
+00008 <font class="preprocessor"></font>
+00009 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifdef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;utf8bidireorder.h&gt;</font>
+00017
+00018 UTF8BiDiReorder::UTF8BiDiReorder() {
+00019
+00020 conv = ucnv_open(<font class="stringliteral">"UTF-8"</font>, &amp;err);
+00021
+00022 }
+00023
+00024 UTF8BiDiReorder::~UTF8BiDiReorder() {
+00025 ucnv_close(conv);
+00026 }
+00027
+00028 <font class="keywordtype">char</font> UTF8BiDiReorder::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00029 {
+00030 UChar *ustr, *ustr2;
+00031
+00032 int32_t len = strlen(text);
+00033 ustr = <font class="keyword">new</font> UChar[len]; <font class="comment">//each char could become a surrogate pair</font>
+00034
+00035 <font class="comment">// Convert UTF-8 string to UTF-16 (UChars)</font>
+00036 len = ucnv_toUChars(conv, ustr, len, text, -1, &amp;err);
+00037 ustr2 = <font class="keyword">new</font> UChar[len];
+00038
+00039 UBiDi* bidi = ubidi_openSized(len + 1, 0, &amp;err);
+00040 ubidi_setPara(bidi, ustr, len, UBIDI_DEFAULT_RTL, NULL, &amp;err);
+00041 len = ubidi_writeReordered(bidi, ustr2, len,
+00042 UBIDI_DO_MIRRORING | UBIDI_REMOVE_BIDI_CONTROLS, &amp;err);
+00043 ubidi_close(bidi);
+00044
+00045 <font class="comment">// len = ubidi_writeReverse(ustr, len, ustr2, len,</font>
+00046 <font class="comment">// UBIDI_DO_MIRRORING | UBIDI_REMOVE_BIDI_CONTROLS, &amp;err);</font>
+00047
+00048 ucnv_fromUChars(conv, text, maxlen, ustr2, len, &amp;err);
+00049
+00050 <font class="keyword">delete</font> [] ustr2;
+00051 <font class="keyword">delete</font> [] ustr;
+00052 <font class="keywordflow">return</font> 0;
+00053 }
+00054
+00055 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8bidireorder_8h-source.html b/doc/api-documentation/html/utf8bidireorder_8h-source.html
new file mode 100644
index 0000000..4afc19c
--- /dev/null
+++ b/doc/api-documentation/html/utf8bidireorder_8h-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8bidireorder.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8bidireorder.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018 <font class="preprocessor">#ifdef _ICU_</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#ifndef UTF8BIDIREORDER_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8BIDIREORDER_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;unicode/utypes.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;unicode/ucnv.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;unicode/uchar.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;unicode/bidi.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00034 <font class="keyword">class </font>SWDLLEXPORT UTF8BiDiReorder : <font class="keyword">public</font> SWFilter
+00035 {
+00036 <font class="keyword">private</font>:
+00037 UConverter* conv;
+00038 UErrorCode err;
+00039 <font class="keyword">public</font>:
+00040 UTF8BiDiReorder();
+00041 ~UTF8BiDiReorder();
+00042 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00043 };
+00044
+00045 <font class="preprocessor">#endif</font>
+00046 <font class="preprocessor"></font>
+00047 <font class="preprocessor">#endif</font>
+00048 <font class="preprocessor"></font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8cantillation_8cpp-source.html b/doc/api-documentation/html/utf8cantillation_8cpp-source.html
new file mode 100644
index 0000000..ff77961
--- /dev/null
+++ b/doc/api-documentation/html/utf8cantillation_8cpp-source.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8cantillation.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8cantillation.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * UTF8Cantillation - SWFilter decendant to remove UTF-8 Hebrew cantillation</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;utf8cantillation.h&gt;</font>
+00011
+00012
+00013 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8Cantillation::on[] = <font class="stringliteral">"On"</font>;
+00014 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8Cantillation::off[] = <font class="stringliteral">"Off"</font>;
+00015 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8Cantillation::optName[] = <font class="stringliteral">"Hebrew Cantillation"</font>;
+00016 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8Cantillation::optTip[] = <font class="stringliteral">"Toggles Hebrew Cantillation Marks"</font>;
+00017
+00018 UTF8Cantillation::UTF8Cantillation() {
+00019 option = <font class="keyword">false</font>;
+00020 options.push_back(on);
+00021 options.push_back(off);
+00022 }
+00023
+00024 UTF8Cantillation::~UTF8Cantillation(){};
+00025
+00026 <font class="keywordtype">void</font> UTF8Cantillation::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00027 {
+00028 option = (!stricmp(ival, on));
+00029 }
+00030
+00031 <font class="keyword">const</font> <font class="keywordtype">char</font> *UTF8Cantillation::getOptionValue()
+00032 {
+00033 <font class="keywordflow">return</font> (option) ? on:off;
+00034 }
+00035
+00036 <font class="keywordtype">char</font> UTF8Cantillation::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00037 {
+00038 <font class="keywordflow">if</font> (!option) {
+00039 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from;
+00040 to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00041 <font class="comment">//The UTF-8 range 0xD6 0x90 to 0xD6 0xAF and 0xD7 0x84 consist of Hebrew cantillation marks so block those out.</font>
+00042 <font class="keywordflow">for</font> (from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; *from; from++) {
+00043 <font class="keywordflow">if</font> (*from != 0xD6) {
+00044 <font class="keywordflow">if</font> (*from == 0xD7 &amp;&amp; *(from + 1) == 0x84) {
+00045 from++;
+00046 }
+00047 <font class="keywordflow">else</font> {
+00048 *to++ = *from;
+00049 }
+00050 }
+00051 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*(from + 1) &lt; 0x90 || *(from + 1) &gt; 0xAF) {
+00052 *to++ = *from;
+00053 from++;
+00054 *to++ = *from;
+00055 }
+00056 <font class="keywordflow">else</font> {
+00057 from++;
+00058 }
+00059 }
+00060 *to++ = 0;
+00061 *to = 0;
+00062 }
+00063 <font class="keywordflow">return</font> 0;
+00064 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8cantillation_8h-source.html b/doc/api-documentation/html/utf8cantillation_8h-source.html
new file mode 100644
index 0000000..8bf7e06
--- /dev/null
+++ b/doc/api-documentation/html/utf8cantillation_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8cantillation.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8cantillation.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef UTF8CANTILLATION_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8CANTILLATION_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_u_t_f8_cantillation.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>:<font class="keyword">public</font> SWFilter
+00030 {
+00031 <font class="keywordtype">bool</font> option;
+00032 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00036 OptionsList options;
+00037 <font class="keyword">public</font>:
+00038 <a class="code" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a> ();
+00039 <font class="keyword">virtual</font> ~ UTF8Cantillation ();
+00040 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00041 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00042 {
+00043 <font class="keywordflow">return</font> optName;
+00044 }
+00045 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00046 {
+00047 <font class="keywordflow">return</font> optTip;
+00048 }
+00049 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00050 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00051 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00052 {
+00053 <font class="keywordflow">return</font> options;
+00054 }
+00055 };
+00056
+00057 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8greekaccents_8cpp-source.html b/doc/api-documentation/html/utf8greekaccents_8cpp-source.html
new file mode 100644
index 0000000..578e0ba
--- /dev/null
+++ b/doc/api-documentation/html/utf8greekaccents_8cpp-source.html
@@ -0,0 +1,266 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8greekaccents.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8greekaccents.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * UTF8GreekAccents - SWFilter decendant to remove UTF-8 Greek accents</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;utf8greekaccents.h&gt;</font>
+00011
+00012
+00013 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8GreekAccents::on[] = <font class="stringliteral">"On"</font>;
+00014 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8GreekAccents::off[] = <font class="stringliteral">"Off"</font>;
+00015 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8GreekAccents::optName[] = <font class="stringliteral">"Greek Accents"</font>;
+00016 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8GreekAccents::optTip[] = <font class="stringliteral">"Toggles Greek Accents"</font>;
+00017
+00018 UTF8GreekAccents::UTF8GreekAccents() {
+00019 option = <font class="keyword">true</font>;
+00020 options.push_back(on);
+00021 options.push_back(off);
+00022 }
+00023
+00024 UTF8GreekAccents::~UTF8GreekAccents(){};
+00025
+00026 <font class="keywordtype">void</font> UTF8GreekAccents::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00027 {
+00028 option = (!stricmp(ival, on));
+00029 }
+00030
+00031 <font class="keyword">const</font> <font class="keywordtype">char</font> *UTF8GreekAccents::getOptionValue()
+00032 {
+00033 <font class="keywordflow">return</font> (option) ? on:off;
+00034 }
+00035
+00036 <font class="keywordtype">char</font> UTF8GreekAccents::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00037 {
+00038 <font class="keywordflow">if</font> (!option) {
+00039 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from;
+00040
+00041 to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00042 <font class="keywordflow">for</font> (from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; *from; from++) {
+00043 <font class="comment">//first just remove combining characters</font>
+00044 <font class="keywordflow">if</font> (*from == 0xE2 &amp;&amp; *(from + 1) == 0x80 &amp;&amp; *(from + 2) == 0x99)
+00045 from += 2;
+00046 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xCC &amp;&amp; *(from + 1)) {
+00047 <font class="keywordflow">if</font> (*(from + 1) == 0x80 || *(from + 1) == 0x81 || *(from + 1) == 0x82 || *(from + 1) == 0x88 || *(from + 1) == 0x93 || *(from + 1) == 0x94)
+00048 from++;
+00049 }
+00050 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xCD &amp;&amp; *(from + 1) == 0xBA)
+00051 from++;
+00052 <font class="comment">//now converted pre-composed characters to their alphabetic bases, discarding the accents</font>
+00053
+00054 <font class="comment">//Greek</font>
+00055 <font class="comment">//capital alpha</font>
+00056 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0x86)) {
+00057 *to++ = 0xCE;
+00058 *to++ = 0x91;
+00059 from++;
+00060 }
+00061 <font class="comment">//capital epsilon</font>
+00062 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0x88)) {
+00063 *to++ = 0xCE;
+00064 *to++ = 0x95;
+00065 from++;
+00066 }
+00067 <font class="comment">//capital eta</font>
+00068 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0x89)) {
+00069 *to++ = 0xCE;
+00070 *to++ = 0x97;
+00071 from++;
+00072 }
+00073 <font class="comment">//capital iota</font>
+00074 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; (*(from + 1) == 0x8A || *(from + 1) == 0xAA))) {
+00075 *to++ = 0xCE;
+00076 *to++ = 0x99;
+00077 from++;
+00078 }
+00079 <font class="comment">//capital omicron</font>
+00080 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0x8C)) {
+00081 *to++ = 0xCE;
+00082 *to++ = 0x9F;
+00083 from++;
+00084 }
+00085 <font class="comment">//capital upsilon</font>
+00086 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; (*(from + 1) == 0x8E || *(from + 1) == 0xAB))) {
+00087 *to++ = 0xCE;
+00088 *to++ = 0xA5;
+00089 from++;
+00090 }
+00091 <font class="comment">//capital omega</font>
+00092 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0x8F)) {
+00093 *to++ = 0xCE;
+00094 *to++ = 0xA9;
+00095 from++;
+00096 }
+00097
+00098 <font class="comment">//alpha</font>
+00099 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0xAC)) {
+00100 *to++ = 0xCE;
+00101 *to++ = 0xB1;
+00102 from++;
+00103 }
+00104 <font class="comment">//epsilon</font>
+00105 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0xAD)) {
+00106 *to++ = 0xCE;
+00107 *to++ = 0xB5;
+00108 from++;
+00109 }
+00110 <font class="comment">//eta</font>
+00111 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0xAE)) {
+00112 *to++ = 0xCE;
+00113 *to++ = 0xB7;
+00114 from++;
+00115 }
+00116 <font class="comment">//iota</font>
+00117 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0xAF) || (*from == 0xCF &amp;&amp; *(from + 1) == 0x8A)) {
+00118 *to++ = 0xCE;
+00119 *to++ = 0xB9;
+00120 from++;
+00121 }
+00122 <font class="comment">//omicron</font>
+00123 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCF &amp;&amp; *(from + 1) == 0x8C)) {
+00124 *to++ = 0xCE;
+00125 *to++ = 0xBF;
+00126 from++;
+00127 }
+00128 <font class="comment">//upsilon</font>
+00129 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCE &amp;&amp; *(from + 1) == 0x88) || (*from == 0xCF &amp;&amp; (*(from + 1) == 0x8B || *(from + 1) == 0x8D))) {
+00130 *to++ = 0xCF;
+00131 *to++ = 0x85;
+00132 from++;
+00133 }
+00134 <font class="comment">//omega</font>
+00135 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from == 0xCF &amp;&amp; *(from + 1) == 0x8E)) {
+00136 *to++ = 0xCF;
+00137 *to++ = 0x89;
+00138 from++;
+00139 }
+00140
+00141 <font class="comment">//Extended Greek</font>
+00142 <font class="comment">//capital alpha</font>
+00143 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBC || *(from + 1) == 0xBE) &amp;&amp; *(from + 2) &gt;= 0x88 &amp;&amp; *(from + 2) &lt;= 0x8F) || (*(from + 1) == 0xBE &amp;&amp; *(from + 2) &gt;= 0xB8 &amp;&amp; *(from + 2) &lt;= 0xBC)) {
+00144 *to++ = 0xCE;
+00145 *to++ = 0x91;
+00146 from+=2;
+00147 }
+00148 <font class="comment">//capital epsilon</font>
+00149 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBC &amp;&amp; *(from + 2) &gt;= 0x98 &amp;&amp; *(from + 2) &lt;= 0x9D) || (*(from + 1) == 0xBF &amp;&amp; (*(from + 2) == 0x88 || *(from + 2) == 0x89)))) {
+00150 *to++ = 0xCE;
+00151 *to++ = 0x95;
+00152 from+=2;
+00153 }
+00154 <font class="comment">//capital eta</font>
+00155 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBC &amp;&amp; *(from + 2) &gt;= 0xA8 &amp;&amp; *(from + 2) &lt;= 0xAF) || (*(from + 1) == 0xBE &amp;&amp; *(from + 2) &gt;= 0x98 &amp;&amp; *(from + 2) &lt;= 0x9F) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) &gt;= 0x8A &amp;&amp; *(from + 2) &lt;= 0x8C))) {
+00156 *to++ = 0xCE;
+00157 *to++ = 0x97;
+00158 from+=2;
+00159 }
+00160 <font class="comment">//capital iota</font>
+00161 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBC &amp;&amp; *(from + 2) &gt;= 0xB8 &amp;&amp; *(from + 2) &lt;= 0xBF) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) &gt;= 0x98 &amp;&amp; *(from + 2) &lt;= 0x9B))) {
+00162 *to++ = 0xCE;
+00163 *to++ = 0x99;
+00164 from+=2;
+00165 }
+00166 <font class="comment">//capital omicron</font>
+00167 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBD &amp;&amp; *(from + 2) &gt;= 0x88 &amp;&amp; *(from + 2) &lt;= 0x8D) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) == 0xB8 || *(from + 2) == 0xB9))) {
+00168 *to++ = 0xCE;
+00169 *to++ = 0x9F;
+00170 from+=2;
+00171 }
+00172 <font class="comment">//capital upsilon</font>
+00173 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBD &amp;&amp; *(from + 2) &gt;= 0x99 &amp;&amp; *(from + 2) &lt;= 0x9F) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) &gt;= 0xA8 &amp;&amp; *(from + 2) &lt;= 0xAB))) {
+00174 *to++ = 0xCE;
+00175 *to++ = 0xA5;
+00176 from+=2;
+00177 }
+00178 <font class="comment">//capital omega</font>
+00179 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; (((*(from + 1) == 0xBD || *(from + 1) == 0xBE) &amp;&amp; *(from + 2) &gt;= 0xA8 &amp;&amp; *(from + 2) &lt;= 0xAF) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) &gt;= 0xBA &amp;&amp; *(from + 2) &lt;= 0xBC))) {
+00180 *to++ = 0xCE;
+00181 *to++ = 0xA9;
+00182 from+=2;
+00183 }
+00184 <font class="comment">//capital rho</font>
+00185 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; *(from + 1) == 0xBF &amp;&amp; *(from + 2) == 0xAC) {
+00186 *to++ = 0xCE;
+00187 *to++ = 0xA1;
+00188 from+=2;
+00189 }
+00190
+00191 <font class="comment">//alpha</font>
+00192 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBC || *(from + 1) == 0xBE) &amp;&amp; *(from + 2) &gt;= 0x80 &amp;&amp; *(from + 2) &lt;= 0x87) || (*(from + 1) == 0xBD &amp;&amp; (*(from + 2) == 0xB0 || *(from + 2) == 0xB1)) || (*(from + 1) == 0xBE &amp;&amp; *(from + 2) &gt;= 0xB0 &amp;&amp; *(from + 2) &lt;= 0xB7)) {
+00193 *to++ = 0xCE;
+00194 *to++ = 0xB1;
+00195 from+=2;
+00196 }
+00197 <font class="comment">//epsilon</font>
+00198 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBC &amp;&amp; *(from + 2) &gt;= 0x90 &amp;&amp; *(from + 2) &lt;= 0x95) || (*(from + 1) == 0xBD &amp;&amp; (*(from + 2) == 0xB2 || *(from + 2) == 0xB3)))) {
+00199 *to++ = 0xCE;
+00200 *to++ = 0xB5;
+00201 from+=2;
+00202 }
+00203 <font class="comment">//eta</font>
+00204 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBE &amp;&amp; *(from + 2) &gt;= 0x90 &amp;&amp; *(from + 2) &lt;= 0x97) || (*(from + 1) == 0xBC &amp;&amp; *(from + 2) &gt;= 0xA0 &amp;&amp; *(from + 2) &lt;= 0xA7) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) &gt;= 0x82 &amp;&amp; *(from + 2) &lt;= 0x87) || (*(from + 1) == 0xBD &amp;&amp; (*(from + 2) == 0xB4 || *(from + 2) == 0xB5)))) {
+00205 *to++ = 0xCE;
+00206 *to++ = 0xB7;
+00207 from+=2;
+00208 }
+00209 <font class="comment">//iota</font>
+00210 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBC &amp;&amp; *(from + 2) &gt;= 0xB0 &amp;&amp; *(from + 2) &lt;= 0xB7) || (*(from + 1) == 0xBD &amp;&amp; (*(from + 2) == 0xB6 || *(from + 2) == 0xB7)) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) &gt;= 0x90 &amp;&amp; *(from + 2) &lt;= 0x97))) {
+00211 *to++ = 0xCE;
+00212 *to++ = 0xB9;
+00213 from+=2;
+00214 }
+00215 <font class="comment">//omicron</font>
+00216 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; (*(from + 1) == 0xBD &amp;&amp; ((*(from + 2) &gt;= 0x80 &amp;&amp; *(from + 2) &lt;= 0x85) || (*(from + 2) == 0xB8 || *(from + 2) == 0xB9)))) {
+00217 *to++ = 0xCE;
+00218 *to++ = 0xBF;
+00219 from+=2;
+00220 }
+00221 <font class="comment">//upsilon</font>
+00222 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBD &amp;&amp; ((*(from + 2) &gt;= 0x90 &amp;&amp; *(from + 2) &lt;= 0x97) || *(from + 2) == 0xBA || *(from + 2) == 0xBB)) || (*(from + 1) == 0xBF &amp;&amp; ((*(from + 2) &gt;= 0xA0 &amp;&amp; *(from + 2) &lt;= 0xA3) || *(from + 2) == 0xA6 || *(from + 2) == 0xA7)))) {
+00223 *to++ = 0xCF;
+00224 *to++ = 0x85;
+00225 from+=2;
+00226 }
+00227 <font class="comment">//omega</font>
+00228 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; ((*(from + 1) == 0xBD &amp;&amp; ((*(from + 2) &gt;= 0xA0 &amp;&amp; *(from + 2) &lt;= 0xA7) || (*(from + 2) == 0xBC || *(from + 2) == 0xBD))) || (*(from + 1) == 0xBE &amp;&amp; (*(from + 2) &gt;= 0xA0 &amp;&amp; *(from + 2) &lt;= 0xA7)) || (*(from + 1) == 0xBF &amp;&amp; *(from + 2) &gt;= 0xB2 &amp;&amp; *(from + 2) &lt;= 0xB7))) {
+00229 *to++ = 0xCF;
+00230 *to++ = 0x89;
+00231 from+=2;
+00232 }
+00233 <font class="comment">//rho</font>
+00234 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*from == 0xE1 &amp;&amp; *(from + 1) == 0xBF &amp;&amp; (*(from + 2) == 0xA4 &amp;&amp; *(from + 2) == 0xA5)) {
+00235 *to++ = 0xCF;
+00236 *to++ = 0x81;
+00237 from+=2;
+00238 }
+00239 <font class="keywordflow">else</font>
+00240 *to++ = *from;
+00241 }
+00242 *to++ = 0;
+00243 *to = 0;
+00244 }
+00245 <font class="keywordflow">return</font> 0;
+00246 }
+00247
+00248
+00249
+00250
+00251
+00252
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8greekaccents_8h-source.html b/doc/api-documentation/html/utf8greekaccents_8h-source.html
new file mode 100644
index 0000000..c9ac492
--- /dev/null
+++ b/doc/api-documentation/html/utf8greekaccents_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8greekaccents.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8greekaccents.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef UTF8GREEKACCENTS_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8GREEKACCENTS_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_u_t_f8_greek_accents.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>:<font class="keyword">public</font> SWFilter
+00030 {
+00031 <font class="keywordtype">bool</font> option;
+00032 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00036 OptionsList options;
+00037 <font class="keyword">public</font>:
+00038 <a class="code" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a> ();
+00039 <font class="keyword">virtual</font> ~ UTF8GreekAccents ();
+00040 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00041 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00042 {
+00043 <font class="keywordflow">return</font> optName;
+00044 }
+00045 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00046 {
+00047 <font class="keywordflow">return</font> optTip;
+00048 }
+00049 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00050 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00051 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00052 {
+00053 <font class="keywordflow">return</font> options;
+00054 }
+00055 };
+00056
+00057 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8hebrewpoints_8cpp-source.html b/doc/api-documentation/html/utf8hebrewpoints_8cpp-source.html
new file mode 100644
index 0000000..a14509c
--- /dev/null
+++ b/doc/api-documentation/html/utf8hebrewpoints_8cpp-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8hebrewpoints.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8hebrewpoints.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * UTF8HebrewPoints - SWFilter decendant to remove UTF-8 Hebrew vowel points</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;utf8hebrewpoints.h&gt;</font>
+00011
+00012
+00013 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8HebrewPoints::on[] = <font class="stringliteral">"On"</font>;
+00014 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8HebrewPoints::off[] = <font class="stringliteral">"Off"</font>;
+00015 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8HebrewPoints::optName[] = <font class="stringliteral">"Hebrew Vowel Points"</font>;
+00016 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8HebrewPoints::optTip[] = <font class="stringliteral">"Toggles Hebrew Vowel Points"</font>;
+00017
+00018 UTF8HebrewPoints::UTF8HebrewPoints() {
+00019 option = <font class="keyword">true</font>;
+00020 options.push_back(on);
+00021 options.push_back(off);
+00022 }
+00023
+00024 UTF8HebrewPoints::~UTF8HebrewPoints(){};
+00025
+00026 <font class="keywordtype">void</font> UTF8HebrewPoints::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00027 {
+00028 option = (!stricmp(ival, on));
+00029 }
+00030
+00031 <font class="keyword">const</font> <font class="keywordtype">char</font> *UTF8HebrewPoints::getOptionValue()
+00032 {
+00033 <font class="keywordflow">return</font> (option) ? on:off;
+00034 }
+00035
+00036 <font class="keywordtype">char</font> UTF8HebrewPoints::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00037 {
+00038 <font class="keywordflow">if</font> (!option) {
+00039 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from;
+00040
+00041 to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00042 <font class="comment">//The UTF-8 range 0xD6 0xB0 to 0xD6 0xBF excluding 0xD6 0x consist of Hebrew cantillation marks so block those out.</font>
+00043 <font class="keywordflow">for</font> (from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; *from; from++) {
+00044 <font class="keywordflow">if</font> ((*from == 0xD6) &amp;&amp; (*(from + 1) &gt;= 0xB0 &amp;&amp; *(from + 1) &lt;= 0xBF) &amp;&amp; (*(from + 1) != 0xBE)) {
+00045 from++;
+00046 }
+00047 <font class="keywordflow">else</font> {
+00048 *to++ = *from;
+00049 }
+00050 }
+00051 *to++ = 0;
+00052 *to = 0;
+00053 }
+00054 <font class="keywordflow">return</font> 0;
+00055 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8hebrewpoints_8h-source.html b/doc/api-documentation/html/utf8hebrewpoints_8h-source.html
new file mode 100644
index 0000000..26459cc
--- /dev/null
+++ b/doc/api-documentation/html/utf8hebrewpoints_8h-source.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8hebrewpoints.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8hebrewpoints.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef UTF8HEBREWPOINTS_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8HEBREWPOINTS_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_u_t_f8_hebrew_points.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>:<font class="keyword">public</font> SWFilter
+00030 {
+00031 <font class="keywordtype">bool</font> option;
+00032 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> on[];
+00033 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> off[];
+00034 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00035 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00036 OptionsList options;
+00037 <font class="keyword">public</font>:
+00038 <a class="code" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a> ();
+00039 <font class="keyword">virtual</font> ~ UTF8HebrewPoints ();
+00040 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00041 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00042 {
+00043 <font class="keywordflow">return</font> optName;
+00044 }
+00045 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00046 {
+00047 <font class="keywordflow">return</font> optTip;
+00048 }
+00049 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00050 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00051 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00052 {
+00053 <font class="keywordflow">return</font> options;
+00054 }
+00055 };
+00056
+00057 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8html_8cpp-source.html b/doc/api-documentation/html/utf8html_8cpp-source.html
new file mode 100644
index 0000000..bb703ab
--- /dev/null
+++ b/doc/api-documentation/html/utf8html_8cpp-source.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8html.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8html.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * utf8html - SWFilter decendant to convert a UTF-8 stream to HTML escapes</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;utf8html.h&gt;</font>
+00011
+00012 UTF8HTML::UTF8HTML() {
+00013 }
+00014
+00015
+00016 <font class="keywordtype">char</font> UTF8HTML::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00017 {
+00018 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *to, *from;
+00019 <font class="keywordtype">int</font> len;
+00020 <font class="keywordtype">char</font> digit[10];
+00021 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ch;
+00022
+00023 len = strlenw(text) + 2; <font class="comment">// shift string to right of buffer</font>
+00024 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00025 memmove(&amp;text[maxlen - len], text, len);
+00026 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)&amp;text[maxlen - len];
+00027 }
+00028 <font class="keywordflow">else</font> from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00029 <font class="comment">// -------------------------------</font>
+00030 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text; *from; from++) {
+00031 ch = 0;
+00032 <font class="keywordflow">if</font> ((*from &amp; 128) != 128) {
+00033 <font class="comment">// if (*from != ' ')</font>
+00034 *to++ = *from;
+00035 <font class="keywordflow">continue</font>;
+00036 }
+00037 <font class="keywordflow">if</font> ((*from &amp; 128) &amp;&amp; ((*from &amp; 64) != 64)) {
+00038 <font class="comment">// error</font>
+00039 *from = <font class="charliteral">'x'</font>;
+00040 <font class="keywordflow">continue</font>;
+00041 }
+00042 *from &lt;&lt;= 1;
+00043 <font class="keywordtype">int</font> subsequent;
+00044 <font class="keywordflow">for</font> (subsequent = 1; (*from &amp; 128); subsequent++) {
+00045 *from &lt;&lt;= 1;
+00046 from[subsequent] &amp;= 63;
+00047 ch &lt;&lt;= 6;
+00048 ch |= from[subsequent];
+00049 }
+00050 subsequent--;
+00051 *from &lt;&lt;=1;
+00052 <font class="keywordtype">char</font> significantFirstBits = 8 - (2+subsequent);
+00053
+00054 ch |= (((short)*from) &lt;&lt; (((6*subsequent)+significantFirstBits)-8));
+00055 from += subsequent;
+00056 *to++ = <font class="charliteral">'&amp;'</font>;
+00057 *to++ = <font class="charliteral">'#'</font>;
+00058 sprintf(digit, <font class="stringliteral">"%d"</font>, ch);
+00059 <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *dig = digit; *dig; dig++)
+00060 *to++ = *dig;
+00061 *to++ = <font class="charliteral">';'</font>;
+00062 }
+00063 *to++ = 0;
+00064 *to = 0;
+00065 <font class="keywordflow">return</font> 0;
+00066 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8html_8h-source.html b/doc/api-documentation/html/utf8html_8h-source.html
new file mode 100644
index 0000000..7552d51
--- /dev/null
+++ b/doc/api-documentation/html/utf8html_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8html.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8html.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef UTF8HTML_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8HTML_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_u_t_f8_h_t_m_l.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>:<font class="keyword">public</font> SWFilter {
+00030 <font class="keyword">public</font>:
+00031 <a class="code" href="class_u_t_f8_h_t_m_l.html">UTF8HTML</a>();
+00032 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00033 };
+00034
+00035 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8latin1_8cpp-source.html b/doc/api-documentation/html/utf8latin1_8cpp-source.html
new file mode 100644
index 0000000..cf89e04
--- /dev/null
+++ b/doc/api-documentation/html/utf8latin1_8cpp-source.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8latin1.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8latin1.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * UTF8Latin1 - SWFilter decendant to convert UTF-8 to Latin-1</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009
+00010 <font class="preprocessor">#include &lt;utf8latin1.h&gt;</font>
+00011
+00012 UTF8Latin1::UTF8Latin1(<font class="keywordtype">char</font> rchar) : replacementChar(rchar) {
+00013 }
+00014
+00015
+00016 <font class="keywordtype">char</font> UTF8Latin1::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00017 {
+00018 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *from;
+00019 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *to;
+00020
+00021 <font class="keywordtype">int</font> len;
+00022 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> uchar;
+00023 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> significantFirstBits, subsequent;
+00024
+00025 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00026 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00027 memmove(&amp;text[maxlen - len], text, len);
+00028 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)&amp;text[maxlen - len];
+00029 }
+00030 <font class="keywordflow">else</font>
+00031 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00032
+00033
+00034 <font class="comment">// -------------------------------</font>
+00035
+00036 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>*)text; *from; from++) {
+00037 uchar = 0;
+00038 <font class="keywordflow">if</font> ((*from &amp; 128) != 128) {
+00039 <font class="comment">// if (*from != ' ')</font>
+00040 uchar = *from;
+00041 }
+00042 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from &amp; 128) &amp;&amp; ((*from &amp; 64) != 64)) {
+00043 <font class="comment">// error, do nothing</font>
+00044 <font class="keywordflow">continue</font>;
+00045 }
+00046 <font class="keywordflow">else</font> {
+00047 *from &lt;&lt;= 1;
+00048 <font class="keywordflow">for</font> (subsequent = 1; (*from &amp; 128); subsequent++) {
+00049 *from &lt;&lt;= 1;
+00050 from[subsequent] &amp;= 63;
+00051 uchar &lt;&lt;= 6;
+00052 uchar |= from[subsequent];
+00053 }
+00054 subsequent--;
+00055 *from &lt;&lt;=1;
+00056 significantFirstBits = 8 - (2+subsequent);
+00057
+00058 uchar |= (((short)*from) &lt;&lt; (((6*subsequent)+significantFirstBits)-8));
+00059 from += subsequent;
+00060 }
+00061
+00062 <font class="keywordflow">if</font> (uchar &lt; 0xff) {
+00063 *to++ = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)uchar;
+00064 }
+00065 <font class="keywordflow">else</font> {
+00066 *to++ = replacementChar;
+00067 }
+00068 }
+00069 *to++ = 0;
+00070 *to = 0;
+00071
+00072 <font class="keywordflow">return</font> 0;
+00073 }
+00074
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8latin1_8h-source.html b/doc/api-documentation/html/utf8latin1_8h-source.html
new file mode 100644
index 0000000..9799eb7
--- /dev/null
+++ b/doc/api-documentation/html/utf8latin1_8h-source.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8latin1.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8latin1.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef UTF8Latin1_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8Latin1_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_u_t_f8_latin1.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_u_t_f8_latin1.html">UTF8Latin1</a>:<font class="keyword">public</font> SWFilter {
+00030 <font class="keywordtype">char</font> replacementChar;
+00031 <font class="keyword">public</font>:
+00032 <a class="code" href="class_u_t_f8_latin1.html">UTF8Latin1</a>(<font class="keywordtype">char</font> rchar = <font class="charliteral">'?'</font>);
+00033 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00034 };
+00035
+00036 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8nfc_8cpp-source.html b/doc/api-documentation/html/utf8nfc_8cpp-source.html
new file mode 100644
index 0000000..6451121
--- /dev/null
+++ b/doc/api-documentation/html/utf8nfc_8cpp-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8nfc.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8nfc.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment">*</font>
+00003 <font class="comment">* utf8nfc - SWFilter decendant to perform NFC (canonical composition</font>
+00004 <font class="comment">* normalization) on UTF-8 text</font>
+00005 <font class="comment">*/</font>
+00006
+00007 <font class="preprocessor">#ifdef _ICU_</font>
+00008 <font class="preprocessor"></font>
+00009 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifdef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;utf8nfc.h&gt;</font>
+00017
+00018 UTF8NFC::UTF8NFC() {
+00019 conv = ucnv_open(<font class="stringliteral">"UTF-8"</font>, &amp;err);
+00020 }
+00021
+00022 UTF8NFC::~UTF8NFC() {
+00023 ucnv_close(conv);
+00024 }
+00025
+00026 <font class="keywordtype">char</font> UTF8NFC::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00027 {
+00028 int32_t len = strlen(text) * 2;
+00029 source = <font class="keyword">new</font> UChar[len + 1]; <font class="comment">//each char could become a surrogate pair</font>
+00030
+00031 <font class="comment">// Convert UTF-8 string to UTF-16 (UChars)</font>
+00032 len = ucnv_toUChars(conv, source, len, text, -1, &amp;err);
+00033 target = <font class="keyword">new</font> UChar[len + 1];
+00034
+00035 <font class="comment">//canonical composition</font>
+00036 unorm_normalize(source, len, UNORM_NFC, 0, target, len, &amp;err);
+00037
+00038 ucnv_fromUChars(conv, text, maxlen, target, -1, &amp;err);
+00039
+00040 <font class="keyword">delete</font> [] source;
+00041 <font class="keyword">delete</font> [] target;
+00042
+00043 <font class="keywordflow">return</font> 0;
+00044 }
+00045
+00046 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8nfc_8h-source.html b/doc/api-documentation/html/utf8nfc_8h-source.html
new file mode 100644
index 0000000..da2c7eb
--- /dev/null
+++ b/doc/api-documentation/html/utf8nfc_8h-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8nfc.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8nfc.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018 <font class="preprocessor">#ifdef _ICU_</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#ifndef UTF8NFC_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8NFC_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;unicode/utypes.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;unicode/ucnv.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;unicode/uchar.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;unicode/unorm.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT UTF8NFC : <font class="keyword">public</font> SWFilter
+00033 {
+00034 <font class="keyword">private</font>:
+00035 UConverter* conv;
+00036 UChar *source, *target;
+00037 UErrorCode err;
+00038 <font class="keyword">public</font>:
+00039 UTF8NFC();
+00040 ~UTF8NFC();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 };
+00043
+00044 <font class="preprocessor">#endif</font>
+00045 <font class="preprocessor"></font>
+00046 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8nfkd_8cpp-source.html b/doc/api-documentation/html/utf8nfkd_8cpp-source.html
new file mode 100644
index 0000000..b01fd27
--- /dev/null
+++ b/doc/api-documentation/html/utf8nfkd_8cpp-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8nfkd.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8nfkd.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment">*</font>
+00003 <font class="comment">* utf8nfkd - SWFilter decendant to perform NFKD (compatability decomposition</font>
+00004 <font class="comment">* normalization) on UTF-8 text</font>
+00005 <font class="comment">*/</font>
+00006
+00007 <font class="preprocessor">#ifdef _ICU_</font>
+00008 <font class="preprocessor"></font>
+00009 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifdef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;utf8nfkd.h&gt;</font>
+00017
+00018 UTF8NFKD::UTF8NFKD() {
+00019 conv = ucnv_open(<font class="stringliteral">"UTF-8"</font>, &amp;err);
+00020 }
+00021
+00022 UTF8NFKD::~UTF8NFKD() {
+00023 ucnv_close(conv);
+00024 }
+00025
+00026 <font class="keywordtype">char</font> UTF8NFKD::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00027 {
+00028 int32_t len = strlen(text) * 2;
+00029 source = <font class="keyword">new</font> UChar[len + 1]; <font class="comment">//each char could become a surrogate pair</font>
+00030
+00031 <font class="comment">// Convert UTF-8 string to UTF-16 (UChars)</font>
+00032 len = ucnv_toUChars(conv, source, len, text, -1, &amp;err);
+00033 target = <font class="keyword">new</font> UChar[len + 1];
+00034
+00035 <font class="comment">//compatability decomposition</font>
+00036 unorm_normalize(source, len, UNORM_NFKD, 0, target, len, &amp;err);
+00037
+00038 ucnv_fromUChars(conv, text, maxlen, target, -1, &amp;err);
+00039
+00040 <font class="keyword">delete</font> [] source;
+00041 <font class="keyword">delete</font> [] target;
+00042
+00043 <font class="keywordflow">return</font> 0;
+00044 }
+00045
+00046 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8nfkd_8h-source.html b/doc/api-documentation/html/utf8nfkd_8h-source.html
new file mode 100644
index 0000000..f07bd90
--- /dev/null
+++ b/doc/api-documentation/html/utf8nfkd_8h-source.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8nfkd.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8nfkd.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018 <font class="preprocessor">#ifdef _ICU_</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#ifndef UTF8NFKD_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8NFKD_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;unicode/utypes.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;unicode/ucnv.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;unicode/uchar.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;unicode/unorm.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT UTF8NFKD : <font class="keyword">public</font> SWFilter
+00033 {
+00034 <font class="keyword">private</font>:
+00035 UConverter* conv;
+00036 UChar *source, *target;
+00037 UErrorCode err;
+00038 <font class="keyword">public</font>:
+00039 UTF8NFKD();
+00040 ~UTF8NFKD();
+00041 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00042 };
+00043
+00044 <font class="preprocessor">#endif</font>
+00045 <font class="preprocessor"></font>
+00046 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8transliterator_8cpp-source.html b/doc/api-documentation/html/utf8transliterator_8cpp-source.html
new file mode 100644
index 0000000..1583384
--- /dev/null
+++ b/doc/api-documentation/html/utf8transliterator_8cpp-source.html
@@ -0,0 +1,493 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8transliterator.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8transliterator.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment">*</font>
+00003 <font class="comment">* utf8transliterators - SWFilter decendant to transliterate between</font>
+00004 <font class="comment">* ICU-supported scripts.</font>
+00005 <font class="comment">*/</font>
+00006
+00007 <font class="preprocessor">#ifdef _ICU_</font>
+00008 <font class="preprocessor"></font>
+00009 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifdef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
+00014 <font class="preprocessor">#endif</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include &lt;utf8transliterator.h&gt;</font>
+00017
+00018 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8Transliterator::optionstring[NUMTARGETSCRIPTS][16] = {
+00019 <font class="stringliteral">"Off"</font>,
+00020 <font class="stringliteral">"Latin"</font>,
+00021 <font class="stringliteral">"Basic Latin"</font>,
+00022 <font class="stringliteral">"Beta"</font>,
+00023 <font class="stringliteral">"BGreek"</font>,
+00024 <font class="comment">/*</font>
+00025 <font class="comment"> "Greek",</font>
+00026 <font class="comment"> "Hebrew",</font>
+00027 <font class="comment"> "Cyrillic",</font>
+00028 <font class="comment"> "Arabic",</font>
+00029 <font class="comment"> "Syriac",</font>
+00030 <font class="comment"> "Katakana",</font>
+00031 <font class="comment"> "Hiragana",</font>
+00032 <font class="comment"> "Jamo",</font>
+00033 <font class="comment"> "Hangul",</font>
+00034 <font class="comment"> "Devanagari",</font>
+00035 <font class="comment"> "Tamil",</font>
+00036 <font class="comment"> "Bengali",</font>
+00037 <font class="comment"> "Gurmukhi",</font>
+00038 <font class="comment"> "Gujarati",</font>
+00039 <font class="comment"> "Oriya",</font>
+00040 <font class="comment"> "Telugu",</font>
+00041 <font class="comment"> "Kannada",</font>
+00042 <font class="comment"> "Malayalam",</font>
+00043 <font class="comment"> "Thai",</font>
+00044 <font class="comment"> "Georgian",</font>
+00045 <font class="comment"> "Armenian",</font>
+00046 <font class="comment"> "Ethiopic",</font>
+00047 <font class="comment"> "Gothic",</font>
+00048 <font class="comment"> "Ugaritic",</font>
+00049 <font class="comment"> "Coptic"</font>
+00050 <font class="comment"> */</font>
+00051 };
+00052
+00053 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8Transliterator::optName[] = <font class="stringliteral">"Transliteration"</font>;
+00054 <font class="keyword">const</font> <font class="keywordtype">char</font> UTF8Transliterator::optTip[] = <font class="stringliteral">"Transliterates between scripts"</font>;
+00055
+00056 UTF8Transliterator::UTF8Transliterator() {
+00057 option = 0;
+00058 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> i;
+00059 <font class="keywordflow">for</font> (i = 0; i &lt; NUMTARGETSCRIPTS; i++) {
+00060 options.push_back(optionstring[i]);
+00061 }
+00062 }
+00063
+00064 <font class="keywordtype">void</font> UTF8Transliterator::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
+00065 {
+00066 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> i = option = NUMTARGETSCRIPTS;
+00067 <font class="keywordflow">while</font> (i &amp;&amp; stricmp(ival, optionstring[i])) {
+00068 i--;
+00069 option = i;
+00070 }
+00071 }
+00072
+00073 <font class="keyword">const</font> <font class="keywordtype">char</font> *UTF8Transliterator::getOptionValue()
+00074 {
+00075 <font class="keywordflow">return</font> (NUMTARGETSCRIPTS &gt; option) ? optionstring[option] : 0;
+00076 }
+00077
+00078 <font class="keywordtype">char</font> UTF8Transliterator::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00079 {
+00080 <font class="keywordflow">if</font> (option) { <font class="comment">// if we want transliteration</font>
+00081 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> i, j;
+00082 UErrorCode err = U_ZERO_ERROR;
+00083 UConverter * conv = NULL;
+00084 conv = ucnv_open(<font class="stringliteral">"UTF-8"</font>, &amp;err);
+00085
+00086 <font class="keywordtype">bool</font> compat = <font class="keyword">false</font>;
+00087 <font class="keywordtype">bool</font> noNFC = <font class="keyword">false</font>;
+00088
+00089 <font class="keywordflow">if</font> (option == SE_JAMO) {
+00090 noNFC = <font class="keyword">true</font>;
+00091 }
+00092
+00093 <font class="comment">// Convert UTF-8 string to UTF-16 (UChars)</font>
+00094 j = strlen(text);
+00095 int32_t len = (j * 2) + 1;
+00096 UChar *source = <font class="keyword">new</font> UChar[len];
+00097 err = U_ZERO_ERROR;
+00098 len = ucnv_toUChars(conv, source, len, text, j, &amp;err);
+00099 source[len] = 0;
+00100
+00101 <font class="comment">// Figure out which scripts are used in the string</font>
+00102 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> scripts[NUMSCRIPTS];
+00103
+00104 <font class="keywordflow">for</font> (i = 0; i &lt; NUMSCRIPTS; i++) {
+00105 scripts[i] = <font class="keyword">false</font>;
+00106 }
+00107
+00108 <font class="keywordflow">for</font> (i = 0; i &lt; len; i++) {
+00109 j = ublock_getCode(source[i]);
+00110 <font class="keywordflow">switch</font> (j) {
+00111 <font class="keywordflow">case</font> UBLOCK_BASIC_LATIN: scripts[SE_LATIN] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00112 <font class="keywordflow">case</font> UBLOCK_GREEK: scripts[SE_GREEK] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00113 <font class="keywordflow">case</font> UBLOCK_HEBREW: scripts[SE_HEBREW] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00114 <font class="keywordflow">case</font> UBLOCK_CYRILLIC: scripts[SE_CYRILLIC] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00115 <font class="keywordflow">case</font> UBLOCK_ARABIC: scripts[SE_ARABIC] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00116 <font class="keywordflow">case</font> UBLOCK_SYRIAC: scripts[SE_SYRIAC] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00117 <font class="keywordflow">case</font> UBLOCK_KATAKANA: scripts[SE_KATAKANA] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00118 <font class="keywordflow">case</font> UBLOCK_HIRAGANA: scripts[SE_HIRAGANA] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00119 <font class="keywordflow">case</font> UBLOCK_HANGUL_SYLLABLES: scripts[SE_HANGUL] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00120 <font class="keywordflow">case</font> UBLOCK_HANGUL_JAMO: scripts[SE_JAMO] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00121 <font class="keywordflow">case</font> UBLOCK_DEVANAGARI: scripts[SE_DEVANAGARI] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00122 <font class="keywordflow">case</font> UBLOCK_TAMIL: scripts[SE_TAMIL] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00123 <font class="keywordflow">case</font> UBLOCK_BENGALI: scripts[SE_BENGALI] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00124 <font class="keywordflow">case</font> UBLOCK_GURMUKHI: scripts[SE_GURMUKHI] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00125 <font class="keywordflow">case</font> UBLOCK_GUJARATI: scripts[SE_GUJARATI] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00126 <font class="keywordflow">case</font> UBLOCK_ORIYA: scripts[SE_ORIYA] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00127 <font class="keywordflow">case</font> UBLOCK_TELUGU: scripts[SE_TELUGU] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00128 <font class="keywordflow">case</font> UBLOCK_KANNADA: scripts[SE_KANNADA] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00129 <font class="keywordflow">case</font> UBLOCK_MALAYALAM: scripts[SE_MALAYALAM] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00130 <font class="keywordflow">case</font> UBLOCK_THAI: scripts[SE_THAI] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00131 <font class="keywordflow">case</font> UBLOCK_GEORGIAN: scripts[SE_GEORGIAN] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00132 <font class="keywordflow">case</font> UBLOCK_ARMENIAN: scripts[SE_ARMENIAN] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00133 <font class="keywordflow">case</font> UBLOCK_ETHIOPIC: scripts[SE_ETHIOPIC] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00134 <font class="keywordflow">case</font> UBLOCK_GOTHIC: scripts[SE_GOTHIC] = <font class="keyword">true</font>; <font class="keywordflow">break</font>;
+00135 <font class="comment">// needs Unicode 3.2? or 4.0? support from ICU</font>
+00136 <font class="comment">//case UBLOCK_UGARITIC: scripts[SE_UGARITIC] = true; break;</font>
+00137 <font class="keywordflow">case</font> UBLOCK_CJK_RADICALS_SUPPLEMENT:
+00138 <font class="keywordflow">case</font> UBLOCK_KANGXI_RADICALS:
+00139 <font class="keywordflow">case</font> UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS:
+00140 <font class="keywordflow">case</font> UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION:
+00141 <font class="keywordflow">case</font> UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A:
+00142 <font class="keywordflow">case</font> UBLOCK_CJK_UNIFIED_IDEOGRAPHS:
+00143 scripts[SE_HAN] = <font class="keyword">true</font>;
+00144 <font class="keywordflow">break</font>;
+00145 <font class="keywordflow">case</font> UBLOCK_CJK_COMPATIBILITY:
+00146 <font class="keywordflow">case</font> UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS:
+00147 <font class="keywordflow">case</font> UBLOCK_CJK_COMPATIBILITY_FORMS:
+00148 scripts[SE_HAN] = <font class="keyword">true</font>;
+00149 compat = <font class="keyword">true</font>;
+00150 <font class="keywordflow">break</font>;
+00151 <font class="keywordflow">case</font> UBLOCK_HANGUL_COMPATIBILITY_JAMO:
+00152 scripts[SE_HANGUL] = <font class="keyword">true</font>;
+00153 compat = <font class="keyword">true</font>;
+00154 <font class="keywordflow">break</font>;
+00155
+00156 <font class="keywordflow">default</font>: scripts[SE_LATIN] = <font class="keyword">true</font>;
+00157 }
+00158 }
+00159 scripts[option] = <font class="keyword">false</font>; <font class="comment">//turn off the reflexive transliteration</font>
+00160
+00161 <font class="comment">//return if we have no transliteration to do for this text</font>
+00162 j = 0;
+00163 <font class="keywordflow">for</font> (i = 0; !j &amp;&amp; i &lt; NUMSCRIPTS; i++) {
+00164 <font class="keywordflow">if</font> (scripts[i]) j++;
+00165 }
+00166 <font class="keywordflow">if</font> (!j) {
+00167 ucnv_close(conv);
+00168 <font class="keywordflow">return</font> 0;
+00169 }
+00170
+00171 UnicodeString id;
+00172 <font class="keywordflow">if</font> (compat) {
+00173 id = UnicodeString(<font class="stringliteral">"NFKD"</font>);
+00174 }
+00175 <font class="keywordflow">else</font> {
+00176 id = UnicodeString(<font class="stringliteral">"NFD"</font>);
+00177 }
+00178
+00179 <font class="comment">//Simple X to Latin transliterators</font>
+00180 <font class="keywordflow">if</font> (scripts[SE_GREEK]) {
+00181 <font class="keywordflow">if</font> (option == SE_BETA)
+00182 id += UnicodeString(<font class="stringliteral">";Greek-Beta"</font>);
+00183 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (option == SE_BGREEK)
+00184 id += UnicodeString(<font class="stringliteral">";Greek-BGreek"</font>);
+00185 <font class="keywordflow">else</font> {
+00186 <font class="keywordflow">if</font> (!strnicmp (((<a class="code" href="class_s_w_module.html">SWModule</a>*)module)-&gt;Lang(), <font class="stringliteral">"cop"</font>, 3)) {
+00187 id += UnicodeString(<font class="stringliteral">";Coptic-Latin"</font>);
+00188 }
+00189 <font class="keywordflow">else</font> {
+00190 id += UnicodeString(<font class="stringliteral">";Greek-Latin"</font>);
+00191 }
+00192 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00193 }
+00194 }
+00195 <font class="keywordflow">if</font> (scripts[SE_HEBREW]) {
+00196 <font class="keywordflow">if</font> (option == SE_BETA)
+00197 id += UnicodeString(<font class="stringliteral">";Hebrew-CCAT"</font>);
+00198 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (option == SE_SYRIAC)
+00199 id += UnicodeString(<font class="stringliteral">";Hebrew-Syriac"</font>);
+00200 <font class="keywordflow">else</font> {
+00201 id += UnicodeString(<font class="stringliteral">";Hebrew-Latin"</font>);
+00202 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00203 }
+00204 }
+00205 <font class="keywordflow">if</font> (scripts[SE_CYRILLIC]) {
+00206 id += UnicodeString(<font class="stringliteral">";Cyrillic-Latin"</font>);
+00207 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00208 }
+00209 <font class="keywordflow">if</font> (scripts[SE_ARABIC]) {
+00210 id += UnicodeString(<font class="stringliteral">";Arabic-Latin"</font>);
+00211 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00212 }
+00213 <font class="keywordflow">if</font> (scripts[SE_SYRIAC]) {
+00214 <font class="keywordflow">if</font> (option == SE_BETA)
+00215 id += UnicodeString(<font class="stringliteral">";Syriac-CCAT"</font>);
+00216 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (option == SE_HEBREW)
+00217 id += UnicodeString(<font class="stringliteral">";Syriac-Hebrew"</font>);
+00218 <font class="keywordflow">else</font> {
+00219 id += UnicodeString(<font class="stringliteral">";Syriac-Latin"</font>);
+00220 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00221 }
+00222 }
+00223 <font class="keywordflow">if</font> (scripts[SE_THAI]) {
+00224 id += UnicodeString(<font class="stringliteral">";Thai-Latin"</font>);
+00225 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00226 }
+00227 <font class="keywordflow">if</font> (scripts[SE_GEORGIAN]) {
+00228 id += UnicodeString(<font class="stringliteral">";Georgian-Latin"</font>);
+00229 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00230 }
+00231 <font class="keywordflow">if</font> (scripts[SE_ARMENIAN]) {
+00232 id += UnicodeString(<font class="stringliteral">";Armenian-Latin"</font>);
+00233 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00234 }
+00235 <font class="keywordflow">if</font> (scripts[SE_ETHIOPIC]) {
+00236 id += UnicodeString(<font class="stringliteral">";Ethiopic-Latin"</font>);
+00237 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00238 }
+00239 <font class="keywordflow">if</font> (scripts[SE_GOTHIC]) {
+00240 id += UnicodeString(<font class="stringliteral">";Gothic-Latin"</font>);
+00241 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00242 }
+00243 <font class="keywordflow">if</font> (scripts[SE_UGARITIC]) {
+00244 id += UnicodeString(<font class="stringliteral">";Ugaritic-Latin"</font>);
+00245 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00246 }
+00247 <font class="keywordflow">if</font> (scripts[SE_HAN]) {
+00248 <font class="keywordflow">if</font> (!strnicmp (((<a class="code" href="class_s_w_module.html">SWModule</a>*)module)-&gt;Lang(), <font class="stringliteral">"ja"</font>, 2)) {
+00249 id += UnicodeString(<font class="stringliteral">";Kanji-OnRomaji"</font>);
+00250 }
+00251 <font class="keywordflow">else</font> {
+00252 id += UnicodeString(<font class="stringliteral">";Han-Pinyin"</font>);
+00253 }
+00254 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00255 }
+00256
+00257 <font class="comment">// Inter-Kana and Kana to Latin transliterators</font>
+00258 <font class="keywordflow">if</font> (option == SE_HIRAGANA &amp;&amp; scripts[SE_KATAKANA]) {
+00259 id += UnicodeString(<font class="stringliteral">";Katakana-Hiragana"</font>);
+00260 scripts[SE_HIRAGANA] = <font class="keyword">true</font>;
+00261 }
+00262 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (option == SE_KATAKANA &amp;&amp; scripts[SE_HIRAGANA]) {
+00263 id += UnicodeString(<font class="stringliteral">";Hiragana-Katakana"</font>);
+00264 scripts[SE_KATAKANA] = <font class="keyword">true</font>;
+00265 }
+00266 <font class="keywordflow">else</font> {
+00267 <font class="keywordflow">if</font> (scripts[SE_KATAKANA]) {
+00268 id += UnicodeString(<font class="stringliteral">";Katakana-Latin"</font>);
+00269 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00270 }
+00271 <font class="keywordflow">if</font> (scripts[SE_HIRAGANA]) {
+00272 id += UnicodeString(<font class="stringliteral">";Hiragana-Latin"</font>);
+00273 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00274 }
+00275 }
+00276
+00277 <font class="comment">// Inter-Korean and Korean to Latin transliterators</font>
+00278 <font class="keywordflow">if</font> (option == SE_HANGUL &amp;&amp; scripts[SE_JAMO]) {
+00279 noNFC = <font class="keyword">false</font>;
+00280 scripts[SE_HANGUL] = <font class="keyword">true</font>;
+00281 }
+00282 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (option == SE_JAMO &amp;&amp; scripts[SE_HANGUL]) {
+00283 noNFC = <font class="keyword">true</font>;
+00284 scripts[SE_JAMO] = <font class="keyword">true</font>;
+00285 }
+00286 <font class="keywordflow">else</font> {
+00287 <font class="keywordflow">if</font> (scripts[SE_HANGUL]) {
+00288 id += UnicodeString(<font class="stringliteral">";Hangul-Latin"</font>);
+00289 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00290 }
+00291 <font class="keywordflow">if</font> (scripts[SE_JAMO]) {
+00292 id += UnicodeString(<font class="stringliteral">";Jamo-Latin"</font>);
+00293 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00294 }
+00295 }
+00296
+00297 <font class="comment">// Indic-Latin</font>
+00298 <font class="keywordflow">if</font> (option &lt; SE_DEVANAGARI || option &gt; SE_MALAYALAM) {
+00299 <font class="comment">// Indic to Latin</font>
+00300 <font class="keywordflow">if</font> (scripts[SE_TAMIL]) {
+00301 id += UnicodeString(<font class="stringliteral">";Tamil-Latin"</font>);
+00302 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00303 }
+00304 <font class="keywordflow">if</font> (scripts[SE_BENGALI]) {
+00305 id += UnicodeString(<font class="stringliteral">";Bengali-Latin"</font>);
+00306 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00307 }
+00308 <font class="keywordflow">if</font> (scripts[SE_GURMUKHI]) {
+00309 id += UnicodeString(<font class="stringliteral">";Gurmukhi-Latin"</font>);
+00310 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00311 }
+00312 <font class="keywordflow">if</font> (scripts[SE_GUJARATI]) {
+00313 id += UnicodeString(<font class="stringliteral">";Gujarati-Latin"</font>);
+00314 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00315 }
+00316 <font class="keywordflow">if</font> (scripts[SE_ORIYA]) {
+00317 id += UnicodeString(<font class="stringliteral">";Oriya-Latin"</font>);
+00318 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00319 }
+00320 <font class="keywordflow">if</font> (scripts[SE_TELUGU]) {
+00321 id += UnicodeString(<font class="stringliteral">";Telugu-Latin"</font>);
+00322 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00323 }
+00324 <font class="keywordflow">if</font> (scripts[SE_KANNADA]) {
+00325 id += UnicodeString(<font class="stringliteral">";Kannada-Latin"</font>);
+00326 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00327 }
+00328 <font class="keywordflow">if</font> (scripts[SE_MALAYALAM]) {
+00329 id += UnicodeString(<font class="stringliteral">";Malayalam-Latin"</font>);
+00330 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00331 }
+00332 }
+00333 <font class="keywordflow">else</font> {
+00334 <font class="keywordflow">if</font> (scripts[SE_LATIN]) {
+00335 id += UnicodeString(<font class="stringliteral">";Latin-InterIndic"</font>);
+00336 }
+00337 <font class="keywordflow">if</font> (scripts[SE_DEVANAGARI]) {
+00338 id += UnicodeString(<font class="stringliteral">";Devanagari-InterIndic"</font>);
+00339 }
+00340 <font class="keywordflow">if</font> (scripts[SE_TAMIL]) {
+00341 id += UnicodeString(<font class="stringliteral">";Tamil-InterIndic"</font>);
+00342 }
+00343 <font class="keywordflow">if</font> (scripts[SE_BENGALI]) {
+00344 id += UnicodeString(<font class="stringliteral">";Bengali-InterIndic"</font>);
+00345 }
+00346 <font class="keywordflow">if</font> (scripts[SE_GURMUKHI]) {
+00347 id += UnicodeString(<font class="stringliteral">";Gurmurkhi-InterIndic"</font>);
+00348 }
+00349 <font class="keywordflow">if</font> (scripts[SE_GUJARATI]) {
+00350 id += UnicodeString(<font class="stringliteral">";Gujarati-InterIndic"</font>);
+00351 }
+00352 <font class="keywordflow">if</font> (scripts[SE_ORIYA]) {
+00353 id += UnicodeString(<font class="stringliteral">";Oriya-InterIndic"</font>);
+00354 }
+00355 <font class="keywordflow">if</font> (scripts[SE_TELUGU]) {
+00356 id += UnicodeString(<font class="stringliteral">";Telugu-InterIndic"</font>);
+00357 }
+00358 <font class="keywordflow">if</font> (scripts[SE_KANNADA]) {
+00359 id += UnicodeString(<font class="stringliteral">";Kannada-InterIndic"</font>);
+00360 }
+00361 <font class="keywordflow">if</font> (scripts[SE_MALAYALAM]) {
+00362 id += UnicodeString(<font class="stringliteral">";Malayalam-InterIndic"</font>);
+00363 }
+00364
+00365 <font class="keywordflow">switch</font>(option) {
+00366 <font class="keywordflow">case</font> SE_DEVANAGARI:
+00367 id += UnicodeString(<font class="stringliteral">";InterIndic-Devanagari"</font>);
+00368 <font class="keywordflow">break</font>;
+00369 <font class="keywordflow">case</font> SE_TAMIL:
+00370 id += UnicodeString(<font class="stringliteral">";InterIndic-Tamil"</font>);
+00371 <font class="keywordflow">break</font>;
+00372 <font class="keywordflow">case</font> SE_BENGALI:
+00373 id += UnicodeString(<font class="stringliteral">";InterIndic-Bengali"</font>);
+00374 <font class="keywordflow">break</font>;
+00375 <font class="keywordflow">case</font> SE_GURMUKHI:
+00376 id += UnicodeString(<font class="stringliteral">";InterIndic-Gurmukhi"</font>);
+00377 <font class="keywordflow">break</font>;
+00378 <font class="keywordflow">case</font> SE_GUJARATI:
+00379 id += UnicodeString(<font class="stringliteral">";InterIndic-Gujarati"</font>);
+00380 <font class="keywordflow">break</font>;
+00381 <font class="keywordflow">case</font> SE_ORIYA:
+00382 id += UnicodeString(<font class="stringliteral">";InterIndic-Oriya"</font>);
+00383 <font class="keywordflow">break</font>;
+00384 <font class="keywordflow">case</font> SE_TELUGU:
+00385 id += UnicodeString(<font class="stringliteral">";InterIndic-Telugu"</font>);
+00386 <font class="keywordflow">break</font>;
+00387 <font class="keywordflow">case</font> SE_KANNADA:
+00388 id += UnicodeString(<font class="stringliteral">";InterIndic-Kannada"</font>);
+00389 <font class="keywordflow">break</font>;
+00390 <font class="keywordflow">case</font> SE_MALAYALAM:
+00391 id += UnicodeString(<font class="stringliteral">";InterIndic-Malayalam"</font>);
+00392 <font class="keywordflow">break</font>;
+00393 <font class="keywordflow">default</font>:
+00394 id += UnicodeString(<font class="stringliteral">";InterIndic-Latin"</font>);
+00395 scripts[SE_LATIN] = <font class="keyword">true</font>;
+00396 <font class="keywordflow">break</font>;
+00397 }
+00398 }
+00399
+00400 <font class="keywordflow">if</font> (scripts[SE_LATIN]) {
+00401 <font class="keywordflow">switch</font> (option) {
+00402 <font class="keywordflow">case</font> SE_GREEK:
+00403 id += UnicodeString(<font class="stringliteral">";Latin-Greek"</font>);
+00404 <font class="keywordflow">break</font>;
+00405 <font class="keywordflow">case</font> SE_HEBREW:
+00406 id += UnicodeString(<font class="stringliteral">";Latin-Hebrew"</font>);
+00407 <font class="keywordflow">break</font>;
+00408 <font class="keywordflow">case</font> SE_CYRILLIC:
+00409 id += UnicodeString(<font class="stringliteral">";Latin-Cyrillic"</font>);
+00410 <font class="keywordflow">break</font>;
+00411 <font class="keywordflow">case</font> SE_ARABIC:
+00412 id += UnicodeString(<font class="stringliteral">";Latin-Arabic"</font>);
+00413 <font class="keywordflow">break</font>;
+00414 <font class="keywordflow">case</font> SE_SYRIAC:
+00415 id += UnicodeString(<font class="stringliteral">";Latin-Syriac"</font>);
+00416 <font class="keywordflow">break</font>;
+00417 <font class="keywordflow">case</font> SE_THAI:
+00418 id += UnicodeString(<font class="stringliteral">";Latin-Thai"</font>);
+00419 <font class="keywordflow">break</font>;
+00420 <font class="keywordflow">case</font> SE_GEORGIAN:
+00421 id += UnicodeString(<font class="stringliteral">";Latin-Georgian"</font>);
+00422 <font class="keywordflow">break</font>;
+00423 <font class="keywordflow">case</font> SE_ARMENIAN:
+00424 id += UnicodeString(<font class="stringliteral">";Latin-Armenian"</font>);
+00425 <font class="keywordflow">break</font>;
+00426 <font class="keywordflow">case</font> SE_ETHIOPIC:
+00427 id += UnicodeString(<font class="stringliteral">";Latin-Ethiopic"</font>);
+00428 <font class="keywordflow">break</font>;
+00429 <font class="keywordflow">case</font> SE_GOTHIC:
+00430 id += UnicodeString(<font class="stringliteral">";Latin-Gothic"</font>);
+00431 <font class="keywordflow">break</font>;
+00432 <font class="keywordflow">case</font> SE_UGARITIC:
+00433 id += UnicodeString(<font class="stringliteral">";Latin-Ugaritic"</font>);
+00434 <font class="keywordflow">break</font>;
+00435 <font class="keywordflow">case</font> SE_COPTIC:
+00436 id += UnicodeString(<font class="stringliteral">";Latin-Coptic"</font>);
+00437 <font class="keywordflow">break</font>;
+00438 <font class="keywordflow">case</font> SE_KATAKANA:
+00439 id += UnicodeString(<font class="stringliteral">";Latin-Katakana"</font>);
+00440 <font class="keywordflow">break</font>;
+00441 <font class="keywordflow">case</font> SE_HIRAGANA:
+00442 id += UnicodeString(<font class="stringliteral">";Latin-Hiragana"</font>);
+00443 <font class="keywordflow">break</font>;
+00444 <font class="keywordflow">case</font> SE_JAMO:
+00445 id += UnicodeString(<font class="stringliteral">";Latin-Jamo"</font>);
+00446 <font class="keywordflow">break</font>;
+00447 <font class="keywordflow">case</font> SE_HANGUL:
+00448 id += UnicodeString(<font class="stringliteral">";Latin-Hangul"</font>);
+00449 <font class="keywordflow">break</font>;
+00450 }
+00451 }
+00452
+00453 <font class="keywordflow">if</font> (option == SE_BASICLATIN) {
+00454 id += UnicodeString(<font class="stringliteral">";Any-Latin1"</font>);
+00455 }
+00456
+00457 <font class="keywordflow">if</font> (noNFC) {
+00458 id += UnicodeString(<font class="stringliteral">";NFD"</font>);
+00459 } <font class="keywordflow">else</font> {
+00460 id += UnicodeString(<font class="stringliteral">";NFC"</font>);
+00461 }
+00462
+00463 UParseError perr;
+00464
+00465 err = U_ZERO_ERROR;
+00466 Transliterator * trans = Transliterator::createInstance(id, UTRANS_FORWARD, perr, err);
+00467 <font class="keywordflow">if</font> (trans) {
+00468 UnicodeString target = UnicodeString(source);
+00469 trans-&gt;transliterate(target);
+00470 len = ucnv_fromUChars(conv, text, maxlen, target.getBuffer(), target.length(), &amp;err);
+00471 <font class="keywordflow">if</font> (len &lt; maxlen) *(text + len) = 0;
+00472 <font class="keywordflow">else</font> *(text + maxlen) = 0;
+00473 <font class="keyword">delete</font> trans;
+00474 }
+00475 ucnv_close(conv);
+00476 }
+00477 <font class="keywordflow">return</font> 0;
+00478 }
+00479 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8transliterator_8h-source.html b/doc/api-documentation/html/utf8transliterator_8h-source.html
new file mode 100644
index 0000000..4b377f1
--- /dev/null
+++ b/doc/api-documentation/html/utf8transliterator_8h-source.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8transliterator.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8transliterator.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)</font>
+00004 <font class="comment"> * CrossWire Bible Society</font>
+00005 <font class="comment"> * P. O. Box 2528</font>
+00006 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00009 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00010 <font class="comment"> * Free Software Foundation version 2.</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00013 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00014 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00015 <font class="comment"> * General Public License for more details.</font>
+00016 <font class="comment"> *</font>
+00017 <font class="comment"> */</font>
+00018 <font class="preprocessor">#ifdef _ICU_</font>
+00019 <font class="preprocessor"></font>
+00020 <font class="preprocessor">#ifndef UTF8TRANSLITERATOR_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8TRANSLITERATOR_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="keyword">enum</font> scriptEnum {SE_OFF, SE_LATIN, <font class="comment">/*one-way (to) transliterators*/</font> SE_BASICLATIN, SE_BETA, SE_BGREEK, <font class="comment">/*two-way transliterators*/</font> SE_GREEK, SE_HEBREW, SE_CYRILLIC, SE_ARABIC, SE_SYRIAC, SE_KATAKANA, SE_HIRAGANA, SE_JAMO, SE_HANGUL, SE_DEVANAGARI, SE_TAMIL, SE_BENGALI, SE_GURMUKHI, SE_GUJARATI, SE_ORIYA, SE_TELUGU, SE_KANNADA, SE_MALAYALAM, SE_THAI, SE_GEORGIAN, SE_ARMENIAN, SE_ETHIOPIC, SE_GOTHIC, SE_UGARITIC, SE_COPTIC, <font class="comment">/*one-way (from) transliterators*/</font> SE_HAN, SE_KANJI};
+00024 <font class="preprocessor">#define NUMSCRIPTS 32</font>
+00025 <font class="preprocessor"></font><font class="preprocessor">#define NUMTARGETSCRIPTS 5</font>
+00026 <font class="preprocessor"></font>
+00027 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;unicode/utypes.h&gt;</font>
+00031 <font class="preprocessor">#include &lt;unicode/ucnv.h&gt;</font>
+00032 <font class="preprocessor">#include &lt;unicode/ustring.h&gt;</font>
+00033 <font class="preprocessor">#include &lt;unicode/uchar.h&gt;</font>
+00034
+00035 <font class="preprocessor">#include &lt;unicode/unistr.h&gt;</font>
+00036 <font class="preprocessor">#include &lt;unicode/translit.h&gt;</font>
+00037
+00038 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00039
+00042 <font class="keyword">class </font>SWDLLEXPORT UTF8Transliterator : <font class="keyword">public</font> SWFilter
+00043 {
+00044 <font class="keywordtype">char</font> option;
+00045
+00046 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optionstring[NUMTARGETSCRIPTS][16];
+00047
+00048 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optName[];
+00049 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> optTip[];
+00050 OptionsList options;
+00051
+00052 <font class="keyword">public</font>:
+00053 UTF8Transliterator ();
+00054 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00055 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionName ()
+00056 {
+00057 <font class="keywordflow">return</font> optName;
+00058 }
+00059 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionTip ()
+00060 {
+00061 <font class="keywordflow">return</font> optTip;
+00062 }
+00063 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setOptionValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *ival);
+00064 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOptionValue ();
+00065 <font class="keyword">virtual</font> OptionsList getOptionValues ()
+00066 {
+00067 <font class="keywordflow">return</font> options;
+00068 }
+00069 };
+00070
+00071 <font class="preprocessor">#endif</font>
+00072 <font class="preprocessor"></font>
+00073 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8utf16_8cpp-source.html b/doc/api-documentation/html/utf8utf16_8cpp-source.html
new file mode 100644
index 0000000..d8048c7
--- /dev/null
+++ b/doc/api-documentation/html/utf8utf16_8cpp-source.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8utf16.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8utf16.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * UTF8UTF16 - SWFilter decendant to convert UTF-8 to UTF-16</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009
+00010 <font class="preprocessor">#include &lt;utf8utf16.h&gt;</font>
+00011
+00012 UTF8UTF16::UTF8UTF16() {
+00013 }
+00014
+00015
+00016 <font class="keywordtype">char</font> UTF8UTF16::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
+00017 {
+00018 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *from;
+00019 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *to;
+00020
+00021 <font class="keywordtype">int</font> len;
+00022 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> uchar;
+00023 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> significantFirstBits, subsequent;
+00024 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> schar;
+00025
+00026 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
+00027 <font class="keywordflow">if</font> (len &lt; maxlen) {
+00028 memmove(&amp;text[maxlen - len], text, len);
+00029 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)&amp;text[maxlen - len];
+00030 }
+00031 <font class="keywordflow">else</font>
+00032 from = (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>*)text;
+00033
+00034
+00035 <font class="comment">// -------------------------------</font>
+00036
+00037 <font class="keywordflow">for</font> (to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>*)text; *from; from++) {
+00038 uchar = 0;
+00039 <font class="keywordflow">if</font> ((*from &amp; 128) != 128) {
+00040 <font class="comment">// if (*from != ' ')</font>
+00041 uchar = *from;
+00042 }
+00043 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((*from &amp; 128) &amp;&amp; ((*from &amp; 64) != 64)) {
+00044 <font class="comment">// error, do nothing</font>
+00045 <font class="keywordflow">continue</font>;
+00046 }
+00047 <font class="keywordflow">else</font> {
+00048 *from &lt;&lt;= 1;
+00049 <font class="keywordflow">for</font> (subsequent = 1; (*from &amp; 128); subsequent++) {
+00050 *from &lt;&lt;= 1;
+00051 from[subsequent] &amp;= 63;
+00052 uchar &lt;&lt;= 6;
+00053 uchar |= from[subsequent];
+00054 }
+00055 subsequent--;
+00056 *from &lt;&lt;=1;
+00057 significantFirstBits = 8 - (2+subsequent);
+00058
+00059 uchar |= (((short)*from) &lt;&lt; (((6*subsequent)+significantFirstBits)-8));
+00060 from += subsequent;
+00061 }
+00062
+00063 <font class="keywordflow">if</font> (uchar &lt; 0x1ffff) {
+00064 *to++ = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)uchar;
+00065 }
+00066 <font class="keywordflow">else</font> {
+00067 uchar -= 0x10000;
+00068 schar = 0xD800 | (uchar &amp; 0x03ff);
+00069 uchar &gt;&gt;= 10;
+00070 uchar |= 0xDC00;
+00071 *to++ = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)schar;
+00072 *to++ = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)uchar;
+00073 }
+00074 }
+00075 *to = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>)0;
+00076
+00077 <font class="keywordflow">return</font> 0;
+00078 }
+00079
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utf8utf16_8h-source.html b/doc/api-documentation/html/utf8utf16_8h-source.html
new file mode 100644
index 0000000..367fed1
--- /dev/null
+++ b/doc/api-documentation/html/utf8utf16_8h-source.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utf8utf16.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utf8utf16.h</h1><div class="fragment"><pre>00001 <font class="comment">/*</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00005 <font class="comment"> * CrossWire Bible Society</font>
+00006 <font class="comment"> * P. O. Box 2528</font>
+00007 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00010 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00011 <font class="comment"> * Free Software Foundation version 2.</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00014 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00016 <font class="comment"> * General Public License for more details.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> */</font>
+00019
+00020 <font class="preprocessor">#ifndef UTF8UTF16_H</font>
+00021 <font class="preprocessor"></font><font class="preprocessor">#define UTF8UTF16_H</font>
+00022 <font class="preprocessor"></font>
+00023 <font class="preprocessor">#include &lt;swfilter.h&gt;</font>
+00024
+00025 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00026
+<a name="l00029"></a><a class="code" href="class_u_t_f8_u_t_f16.html">00029</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>:<font class="keyword">public</font> SWFilter {
+00030 <font class="keyword">public</font>:
+00031 <a class="code" href="class_u_t_f8_u_t_f16.html">UTF8UTF16</a>();
+00032 <font class="keyword">virtual</font> <font class="keywordtype">char</font> ProcessText (<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> * = 0);
+00033 };
+00034
+00035 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utilconf_8cpp-source.html b/doc/api-documentation/html/utilconf_8cpp-source.html
new file mode 100644
index 0000000..dfa9b37
--- /dev/null
+++ b/doc/api-documentation/html/utilconf_8cpp-source.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utilconf.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utilconf.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;utilstr.h&gt;</font>
+00003
+00004
+00005 <font class="comment">/******************************************************************************</font>
+00006 <font class="comment"> * getconfent - Get the value of an entry in a configuration file</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * ENT: filename - File name in which to look for entry</font>
+00009 <font class="comment"> * entryname - Entry of which to obtain value</font>
+00010 <font class="comment"> * buf - Buffer to store entry value</font>
+00011 <font class="comment"> * len - Maximum length to write into buffer</font>
+00012 <font class="comment"> *</font>
+00013 <font class="comment"> * RET: error status</font>
+00014 <font class="comment"> */</font>
+00015
+00016 <font class="keywordtype">char</font> getconfent(<font class="keywordtype">char</font> *filename, <font class="keywordtype">char</font> *entryname, <font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len)
+00017 {
+00018 <font class="keywordflow">return</font> 0;
+00019 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utilconf_8h-source.html b/doc/api-documentation/html/utilconf_8h-source.html
new file mode 100644
index 0000000..235dcd2
--- /dev/null
+++ b/doc/api-documentation/html/utilconf_8h-source.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utilconf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utilconf.h</h1><div class="fragment"><pre>00001 <font class="preprocessor">#ifndef UTILCONF_H</font>
+00002 <font class="preprocessor"></font><font class="preprocessor">#define UTILCONF_H</font>
+00003 <font class="preprocessor"></font>
+00004
+00005 <font class="keywordtype">char</font> getconfent (<font class="keywordtype">char</font> *filename, <font class="keywordtype">char</font> *entryname, <font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len);
+00006
+00007
+00008 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utilfuns_8h-source.html b/doc/api-documentation/html/utilfuns_8h-source.html
new file mode 100644
index 0000000..d5d569a
--- /dev/null
+++ b/doc/api-documentation/html/utilfuns_8h-source.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utilfuns.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utilfuns.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * utilfuns.h - utility function prototypes</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: utilfuns_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021 <font class="preprocessor">#ifndef UTILFUNS_H</font>
+00022 <font class="preprocessor"></font><font class="preprocessor">#define UTILFUNS_H</font>
+00023 <font class="preprocessor"></font>
+00024
+00025 <font class="preprocessor">#include &lt;utilstr.h&gt;</font>
+00026 <font class="preprocessor">#include &lt;utilconf.h&gt;</font>
+00027
+00028
+00029 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utilstr_8cpp-source.html b/doc/api-documentation/html/utilstr_8cpp-source.html
new file mode 100644
index 0000000..c2b5d84
--- /dev/null
+++ b/doc/api-documentation/html/utilstr_8cpp-source.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utilstr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utilstr.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;utilstr.h&gt;</font>
+00003 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00004
+00005 <font class="comment">/******************************************************************************</font>
+00006 <font class="comment"> * stdstr - Sets/gets a string</font>
+00007 <font class="comment"> *</font>
+00008 <font class="comment"> * ENT: ipstr - pointer to a string pointer to set if necessary</font>
+00009 <font class="comment"> * istr - string to set to *ipstr</font>
+00010 <font class="comment"> * 0 - only get</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * RET: *ipstr</font>
+00013 <font class="comment"> */</font>
+00014
+00015 <font class="keywordtype">char</font> *stdstr(<font class="keywordtype">char</font> **ipstr, <font class="keyword">const</font> <font class="keywordtype">char</font> *istr) {
+00016 <font class="keywordflow">if</font> (istr) {
+00017 <font class="keywordflow">if</font> (*ipstr)
+00018 <font class="keyword">delete</font> [] *ipstr;
+00019 <font class="keywordtype">int</font> len = strlen(istr) + 1;
+00020 *ipstr = <font class="keyword">new</font> <font class="keywordtype">char</font> [ len ];
+00021 memcpy(*ipstr, istr, len);
+00022 }
+00023 <font class="keywordflow">return</font> *ipstr;
+00024 }
+00025
+00026
+00027 <font class="comment">/******************************************************************************</font>
+00028 <font class="comment"> * strstrip - Removes leading and trailing spaces from a string</font>
+00029 <font class="comment"> *</font>
+00030 <font class="comment"> * ENT: istr - string pointer to strip</font>
+00031 <font class="comment"> *</font>
+00032 <font class="comment"> * RET: *istr</font>
+00033 <font class="comment"> */</font>
+00034
+00035 <font class="keywordtype">char</font> *strstrip(<font class="keywordtype">char</font> *istr) {
+00036 <font class="keywordtype">char</font> *tmp = istr;
+00037 <font class="keywordtype">char</font> *rtmp;
+00038
+00039 <font class="keywordtype">int</font> len = strlen(istr);
+00040 <font class="keywordflow">if</font> (len &lt; 1)
+00041 <font class="keywordflow">return</font> istr;
+00042 rtmp = istr + (len - 1);
+00043
+00044 <font class="keywordflow">while</font> ((*rtmp == <font class="charliteral">' '</font>)||(*rtmp == <font class="charliteral">'\t'</font>)||(*rtmp == 10)||(*rtmp == 13)) *(rtmp--) = 0;
+00045 <font class="keywordflow">while</font> ((*tmp == <font class="charliteral">' '</font>)||(*tmp == <font class="charliteral">'\t'</font>)||(*tmp == 10)||(*tmp == 13)) tmp++;
+00046 memmove(istr, tmp, (rtmp - tmp) + 1);
+00047 istr[(rtmp - tmp) + 1] = 0;
+00048
+00049 <font class="keywordflow">return</font> istr;
+00050 }
+00051
+00052
+00053 <font class="comment">/******************************************************************************</font>
+00054 <font class="comment"> * stristr - Scans a string for the occurrence of a given substring, no case</font>
+00055 <font class="comment"> *</font>
+00056 <font class="comment"> * ENT: scans s1 for the first occurrence of the substring s2, ingnoring case</font>
+00057 <font class="comment"> *</font>
+00058 <font class="comment"> * RET: a pointer to the element in s1, where s2 begins (points to s2 in s1).</font>
+00059 <font class="comment"> * If s2 does not occur in s1, returns null.</font>
+00060 <font class="comment"> */</font>
+00061
+00062 <font class="keyword">const</font> <font class="keywordtype">char</font> *stristr(<font class="keyword">const</font> <font class="keywordtype">char</font> *s1, <font class="keyword">const</font> <font class="keywordtype">char</font> *s2) {
+00063 <font class="keywordtype">int</font> tLen = strlen(s2);
+00064 <font class="keywordtype">int</font> cLen = strlen(s1);
+00065 <font class="keywordtype">char</font> *target = <font class="keyword">new</font> <font class="keywordtype">char</font> [ tLen + 1 ];
+00066 <font class="keywordtype">int</font> i, j;
+00067 <font class="keyword">const</font> <font class="keywordtype">char</font> *retVal = 0;
+00068
+00069 strcpy(target, s2);
+00070 <font class="keywordflow">for</font> (i = 0; i &lt; tLen; i++)
+00071 target[i] = SW_toupper(target[i]);
+00072
+00073 <font class="keywordflow">for</font> (i = 0; i &lt; (cLen - tLen)+1; i++) {
+00074 <font class="keywordflow">if</font> (SW_toupper(s1[i]) == (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)*target) {
+00075 <font class="keywordflow">for</font> (j = 1; j &lt; tLen; j++) {
+00076 <font class="keywordflow">if</font> (SW_toupper(s1[i+j]) != (<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font>)target[j])
+00077 <font class="keywordflow">break</font>;
+00078 }
+00079 <font class="keywordflow">if</font> (j == tLen) {
+00080 retVal = s1+i;
+00081 <font class="keywordflow">break</font>;
+00082 }
+00083 }
+00084 }
+00085 <font class="keyword">delete</font> [] target;
+00086 <font class="keywordflow">return</font> retVal;
+00087 }
+00088
+00089 <font class="comment">/******************************************************************************</font>
+00090 <font class="comment"> * strnicmp - compares the first n bytes of 2 string ignoring case</font>
+00091 <font class="comment"> *</font>
+00092 <font class="comment"> * ENT: compares s1 to s2 comparing the first n byte ingnoring case</font>
+00093 <font class="comment"> *</font>
+00094 <font class="comment"> * RET: same as strcmp</font>
+00095 <font class="comment"> */</font>
+00096
+00097 <font class="keyword">const</font> <font class="keywordtype">char</font> strnicmp(<font class="keyword">const</font> <font class="keywordtype">char</font> *s1, <font class="keyword">const</font> <font class="keywordtype">char</font> *s2, <font class="keywordtype">int</font> len) {
+00098
+00099 <font class="keywordtype">int</font> tLen = strlen(s2);
+00100 <font class="keywordtype">int</font> cLen = strlen(s1);
+00101 <font class="keywordtype">char</font> diff;
+00102 <font class="keywordtype">int</font> i;
+00103 <font class="keywordflow">for</font> (i = 0; ((i &lt; len) &amp;&amp; (i &lt; tLen) &amp;&amp; (i &lt; cLen)); i++) {
+00104 <font class="keywordflow">if</font> ((diff = SW_toupper(*s1) - SW_toupper(*s2)))
+00105 <font class="keywordflow">return</font> diff;
+00106 s1++;
+00107 s2++;
+00108 }
+00109 <font class="keywordflow">return</font> (i &lt; len) ? cLen - tLen : 0;
+00110 }
+00111
+00112 <font class="comment">/******************************************************************************</font>
+00113 <font class="comment"> * strlenw - Scans a string for trailing 0x0000 and return size in BYTES</font>
+00114 <font class="comment"> *</font>
+00115 <font class="comment"> * ENT: target - string for which to determine size</font>
+00116 <font class="comment"> *</font>
+00117 <font class="comment"> * RET: length in BYTES </font>
+00118 <font class="comment"> * If s2 does not occur in s1, returns null.</font>
+00119 <font class="comment"> */</font>
+00120
+00121 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> strlenw(<font class="keyword">const</font> <font class="keywordtype">char</font> *s1) {
+00122 <font class="keywordflow">return</font> strlen(s1);
+00123 <font class="comment">// utf8 says no null in string except terminator, so below code is overkill</font>
+00124 <font class="comment">/*</font>
+00125 <font class="comment"> const char *ch = s1;</font>
+00126 <font class="comment"> if (!*ch)</font>
+00127 <font class="comment"> ch++;</font>
+00128 <font class="comment"> while (*ch) {</font>
+00129 <font class="comment"> ch++;</font>
+00130 <font class="comment"> if (!*ch)</font>
+00131 <font class="comment"> ch++;</font>
+00132 <font class="comment"> }</font>
+00133 <font class="comment"> return (unsigned int)(ch - s1) - 1;</font>
+00134 <font class="comment">*/</font>
+00135 }
+00136
+00137
+00138 <font class="comment">/******************************************************************************</font>
+00139 <font class="comment"> * toupperstr - converts a string to uppercase string</font>
+00140 <font class="comment"> *</font>
+00141 <font class="comment"> * ENT: target - string to convert</font>
+00142 <font class="comment"> *</font>
+00143 <font class="comment"> * RET: target</font>
+00144 <font class="comment"> */</font>
+00145
+00146 <font class="keywordtype">char</font> *toupperstr(<font class="keywordtype">char</font> *buf) {
+00147 <font class="keywordtype">char</font> *ret = buf;
+00148 <font class="keywordflow">while</font> (*buf)
+00149 *buf = SW_toupper(*buf++);
+00150
+00151 <font class="keywordflow">return</font> ret;
+00152 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/utilstr_8h-source.html b/doc/api-documentation/html/utilstr_8h-source.html
new file mode 100644
index 0000000..d274f7b
--- /dev/null
+++ b/doc/api-documentation/html/utilstr_8h-source.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>utilstr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>utilstr.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * utilstr.h - prototypes for string utility functions</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: utilstr_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef UTILSTR_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define UTILSTR_H</font>
+00024 <font class="preprocessor"></font>
+00027 <font class="keywordtype">char</font> *stdstr (<font class="keywordtype">char</font> **iistr, <font class="keyword">const</font> <font class="keywordtype">char</font> *istr);
+00028 <font class="keywordtype">char</font> *strstrip (<font class="keywordtype">char</font> *istr);
+00029 <font class="keyword">const</font> <font class="keywordtype">char</font> *stristr (<font class="keyword">const</font> <font class="keywordtype">char</font> *s1, <font class="keyword">const</font> <font class="keywordtype">char</font> *s2);
+00030 <font class="keyword">const</font> <font class="keywordtype">char</font> strnicmp(<font class="keyword">const</font> <font class="keywordtype">char</font> *s1, <font class="keyword">const</font> <font class="keywordtype">char</font> *s2, <font class="keywordtype">int</font> len);
+00031 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> strlenw(<font class="keyword">const</font> <font class="keywordtype">char</font> *s1);
+00032 <font class="keywordtype">char</font> *toupperstr(<font class="keywordtype">char</font> *buf);
+00033
+00034 <font class="comment">/*</font>
+00035 <font class="comment">extern "C" {</font>
+00036 <font class="comment">int stricmp(const char *s1, const char *s2);</font>
+00037 <font class="comment">}</font>
+00038 <font class="comment">*/</font>
+00039
+00040 <font class="comment">/******************************************************************************</font>
+00041 <font class="comment"> * SW_toupper - array of uppercase values for any given Latin-1 value</font>
+00042 <font class="comment"> *</font>
+00043 <font class="comment"> * use this instead of toupper() for fast lookups on accented characters</font>
+00044 <font class="comment"> */</font>
+00045 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> SW_toupper_array[256] =
+00046 {
+00047 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+00048 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+00049 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+00050 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+00051 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+00052 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+00053 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+00054 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+00055 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+00056 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+00057 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+00058 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+00059 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+00060 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+00061 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+00062 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+00063 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+00064 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+00065 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+00066 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+00067 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+00068 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+00069 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+00070 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+00071 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+00072 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+00073 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+00074 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+00075 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+00076 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+00077 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xf7,
+00078 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xff
+00079 };
+00080
+00081 <font class="preprocessor">#define SW_toupper(c) SW_toupper_array[(unsigned char)c]</font>
+00082 <font class="preprocessor"></font>
+00083 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/versekey_8cpp-source.html b/doc/api-documentation/html/versekey_8cpp-source.html
new file mode 100644
index 0000000..7a5266b
--- /dev/null
+++ b/doc/api-documentation/html/versekey_8cpp-source.html
@@ -0,0 +1,1464 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>versekey.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>versekey.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * VerseKey.cpp - code for class 'VerseKey'- a standard Biblical verse key</font>
+00003 <font class="comment"> */</font>
+00004
+00005 <font class="preprocessor">#include &lt;swmacs.h&gt;</font>
+00006 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00011
+00012 <font class="preprocessor">#ifndef __GNUC__</font>
+00013 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00014 <font class="preprocessor">#else</font>
+00015 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00016 <font class="preprocessor">#endif</font>
+00017 <font class="preprocessor"></font>
+00018 <font class="preprocessor">#include &lt;utilstr.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;swlog.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;localemgr.h&gt;</font>
+00023 <font class="keyword">extern</font> <font class="stringliteral">"C"</font> {
+00024 <font class="preprocessor">#include &lt;roman.h&gt;</font>
+00025 }
+00026
+00027
+00028 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *classes[] = {<font class="stringliteral">"VerseKey"</font>, <font class="stringliteral">"SWKey"</font>, <font class="stringliteral">"SWObject"</font>, 0};
+00029 <a class="code" href="class_s_w_class.html">SWClass</a> VerseKey::classdef(classes);
+00030
+00031 <font class="comment">/******************************************************************************</font>
+00032 <font class="comment"> * Initialize static members of VerseKey</font>
+00033 <font class="comment"> */</font>
+00034
+00035 <font class="preprocessor">#include &lt;canon.h&gt;</font> <font class="comment">// Initialize static members of canonical books structure</font>
+00036
+00037 <font class="keyword">struct </font>sbook *VerseKey::builtin_books[2] = {0,0};
+00038 <font class="keyword">const</font> <font class="keywordtype">char</font> VerseKey::builtin_BMAX[2] = {39, 27};
+00039 <font class="keywordtype">long</font> *VerseKey::offsets[2][2] = {{VerseKey::otbks, VerseKey::otcps}, {VerseKey::ntbks, VerseKey::ntcps}};
+<a name="l00040"></a><a class="code" href="class_verse_key.html#r3">00040</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#r3">VerseKey::instance</a> = 0;
+00041 VerseKey::LocaleCache VerseKey::localeCache;
+00042
+00043
+00044 <font class="comment">/******************************************************************************</font>
+00045 <font class="comment"> * VerseKey::init - initializes instance of VerseKey</font>
+00046 <font class="comment"> */</font>
+00047
+<a name="l00048"></a><a class="code" href="class_verse_key.html#c3">00048</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#c3">VerseKey::init</a>() {
+00049 myclass = &amp;classdef;
+00050 <font class="keywordflow">if</font> (!<a class="code" href="class_verse_key.html#r3">instance</a>)
+00051 <a class="code" href="class_verse_key.html#c2">initstatics</a>();
+00052
+00053 <a class="code" href="class_verse_key.html#r3">instance</a>++;
+00054 <a class="code" href="class_verse_key.html#o8">autonorm</a> = 1; <font class="comment">// default auto normalization to true</font>
+00055 <a class="code" href="class_verse_key.html#o9">headings</a> = 0; <font class="comment">// default display headings option is false</font>
+00056 upperBound = 0;
+00057 lowerBound = 0;
+00058 <a class="code" href="class_verse_key.html#o4">testament</a> = 0;
+00059 book = 0;
+00060 chapter = 0;
+00061 verse = 0;
+00062 locale = 0;
+00063
+00064 setLocale(<a class="code" href="class_locale_mgr.html#p0">LocaleMgr::systemLocaleMgr</a>.getDefaultLocaleName());
+00065 }
+00066
+00067 <font class="comment">/******************************************************************************</font>
+00068 <font class="comment"> * VerseKey Constructor - initializes instance of VerseKey</font>
+00069 <font class="comment"> *</font>
+00070 <font class="comment"> * ENT: ikey - base key (will take various forms of 'BOOK CH:VS'. See</font>
+00071 <font class="comment"> * VerseKey::parse for more detailed information)</font>
+00072 <font class="comment"> */</font>
+00073
+<a name="l00074"></a><a class="code" href="class_verse_key.html#a1">00074</a> <a class="code" href="class_verse_key.html#a0">VerseKey::VerseKey</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *ikey) : <a class="code" href="class_s_w_key.html">SWKey</a>(*ikey)
+00075 {
+00076 <a class="code" href="class_verse_key.html#c3">init</a>();
+00077 <font class="keywordflow">if</font> (ikey)
+00078 <a class="code" href="class_verse_key.html#c5">parse</a>();
+00079 }
+00080
+00081
+00082 <font class="comment">/******************************************************************************</font>
+00083 <font class="comment"> * VerseKey Constructor - initializes instance of VerseKey</font>
+00084 <font class="comment"> *</font>
+00085 <font class="comment"> * ENT: ikey - text key (will take various forms of 'BOOK CH:VS'. See</font>
+00086 <font class="comment"> * VerseKey::parse for more detailed information)</font>
+00087 <font class="comment"> */</font>
+00088
+<a name="l00089"></a><a class="code" href="class_verse_key.html#a0">00089</a> <a class="code" href="class_verse_key.html#a0">VerseKey::VerseKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey) : <a class="code" href="class_s_w_key.html">SWKey</a>(ikey)
+00090 {
+00091 <a class="code" href="class_verse_key.html#c3">init</a>();
+00092 <font class="keywordflow">if</font> (ikey)
+00093 <a class="code" href="class_verse_key.html#c5">parse</a>();
+00094 }
+00095
+00096
+00097 <a class="code" href="class_verse_key.html#a0">VerseKey::VerseKey</a>(VerseKey <font class="keyword">const</font> &amp;k) : <a class="code" href="class_s_w_key.html">SWKey</a>(k)
+00098 {
+00099 <a class="code" href="class_verse_key.html#c3">init</a>();
+00100 <a class="code" href="class_verse_key.html#o8">autonorm</a> = k.autonorm;
+00101 <a class="code" href="class_verse_key.html#o9">headings</a> = k.headings;
+00102 <a class="code" href="class_verse_key.html#o4">testament</a> = k.Testament();
+00103 book = k.Book();
+00104 chapter = k.Chapter();
+00105 verse = k.Verse();
+00106 <a class="code" href="class_verse_key.html#a7">LowerBound</a>(k.LowerBound());
+00107 <a class="code" href="class_verse_key.html#a8">UpperBound</a>(k.UpperBound());
+00108 }
+00109
+00110
+<a name="l00111"></a><a class="code" href="class_verse_key.html#a2">00111</a> <a class="code" href="class_verse_key.html#a0">VerseKey::VerseKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *min, <font class="keyword">const</font> <font class="keywordtype">char</font> *max) : <a class="code" href="class_s_w_key.html">SWKey</a>()
+00112 {
+00113 <a class="code" href="class_verse_key.html#c3">init</a>();
+00114 <a class="code" href="class_verse_key.html#a7">LowerBound</a>(min);
+00115 <a class="code" href="class_verse_key.html#a8">UpperBound</a>(max);
+00116 <a class="code" href="class_verse_key.html#a16">setPosition</a>(TOP);
+00117 }
+00118
+00119
+<a name="l00120"></a><a class="code" href="class_verse_key.html#a10">00120</a> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_verse_key.html#a10">VerseKey::clone</a>()<font class="keyword"> const</font>
+00121 <font class="keyword"></font>{
+00122 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(*<font class="keyword">this</font>);
+00123 }
+00124
+00125
+00126 <font class="comment">/******************************************************************************</font>
+00127 <font class="comment"> * VerseKey Destructor - cleans up instance of VerseKey</font>
+00128 <font class="comment"> *</font>
+00129 <font class="comment"> * ENT: ikey - text key</font>
+00130 <font class="comment"> */</font>
+00131
+<a name="l00132"></a><a class="code" href="class_verse_key.html#a4">00132</a> <a class="code" href="class_verse_key.html#a4">VerseKey::~VerseKey</a>() {
+00133 <font class="keywordflow">if</font> (upperBound)
+00134 <font class="keyword">delete</font> upperBound;
+00135 <font class="keywordflow">if</font> (lowerBound)
+00136 <font class="keyword">delete</font> lowerBound;
+00137 <font class="keywordflow">if</font> (locale)
+00138 <font class="keyword">delete</font> [] locale;
+00139
+00140 --<a class="code" href="class_verse_key.html#r3">instance</a>;
+00141 }
+00142
+00143
+00144 <font class="keywordtype">void</font> VerseKey::setLocale(<font class="keyword">const</font> <font class="keywordtype">char</font> *name) {
+00145 <font class="keywordtype">char</font> *BMAX;
+00146 <font class="keyword">struct </font>sbook **books;
+00147 <font class="keywordtype">bool</font> useCache = <font class="keyword">false</font>;
+00148
+00149 <font class="keywordflow">if</font> (localeCache.name)
+00150 useCache = (!strcmp(localeCache.name, name));
+00151
+00152 <font class="keywordflow">if</font> (!useCache) { <font class="comment">// if we're setting params for a new locale</font>
+00153 stdstr(&amp;(localeCache.name), name);
+00154 localeCache.abbrevsCnt = 0;
+00155 }
+00156
+00157 <a class="code" href="class_s_w_locale.html">SWLocale</a> *locale = (useCache) ? localeCache.locale : <a class="code" href="class_locale_mgr.html#p0">LocaleMgr::systemLocaleMgr</a>.<a class="code" href="class_locale_mgr.html#a2">getLocale</a>(name);
+00158 localeCache.locale = locale;
+00159
+00160 <font class="keywordflow">if</font> (locale) {
+00161 locale-&gt;<a class="code" href="class_s_w_locale.html#a7">getBooks</a>(&amp;BMAX, &amp;books);
+00162 setBooks(BMAX, books);
+00163 setBookAbbrevs(locale-&gt;<a class="code" href="class_s_w_locale.html#a6">getBookAbbrevs</a>(), localeCache.abbrevsCnt);
+00164 localeCache.abbrevsCnt = abbrevsCnt;
+00165 }
+00166 <font class="keywordflow">else</font> {
+00167 setBooks(builtin_BMAX, builtin_books);
+00168 setBookAbbrevs(builtin_abbrevs, localeCache.abbrevsCnt);
+00169 localeCache.abbrevsCnt = abbrevsCnt;
+00170 }
+00171 stdstr(&amp;(this-&gt;locale), localeCache.name);
+00172 }
+00173
+00174
+00175 <font class="keywordtype">void</font> VerseKey::setBooks(<font class="keyword">const</font> <font class="keywordtype">char</font> *iBMAX, <font class="keyword">struct</font> sbook **ibooks) {
+00176 BMAX = iBMAX;
+00177 books = ibooks;
+00178 }
+00179
+00180
+00181 <font class="keywordtype">void</font> VerseKey::setBookAbbrevs(<font class="keyword">const</font> <font class="keyword">struct</font> abbrev *bookAbbrevs, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> size) {
+00182 abbrevs = bookAbbrevs;
+00183 <font class="keywordflow">if</font> (!size) {
+00184 <font class="keywordflow">for</font> (abbrevsCnt = 1; *abbrevs[abbrevsCnt].ab; abbrevsCnt++) {
+00185 <font class="comment">/*</font>
+00186 <font class="comment"> if (strcmp(abbrevs[abbrevsCnt-1].ab, abbrevs[abbrevsCnt].ab) &gt; 0) {</font>
+00187 <font class="comment"> fprintf(stderr, "ERROR: book abbreviation (canon.h or locale) misordered at entry: %s\n", abbrevs[abbrevsCnt].ab);</font>
+00188 <font class="comment"> exit(-1);</font>
+00189 <font class="comment"> }</font>
+00190 <font class="comment"> */</font>
+00191 }
+00192 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> t = 0; t &lt; 2; t++) {
+00193 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; BMAX[t]; i++) {
+00194 <font class="keywordtype">int</font> bn = getBookAbbrev(books[t][i].name);
+00195 <font class="keywordflow">if</font> ((bn-1)%39 != i) {
+00196 SWLog::systemlog-&gt;LogError(<font class="stringliteral">"Book: %s does not have a matching toupper abbrevs entry! book number returned was: %d"</font>, books[t][i].name, bn);
+00197 }
+00198 }
+00199 }
+00200 }
+00201 <font class="keywordflow">else</font> abbrevsCnt = size;
+00202 }
+00203
+00204
+00205 <font class="comment">/******************************************************************************</font>
+00206 <font class="comment"> * VerseKey::initstatics - initializes statics. Performed only when first</font>
+00207 <font class="comment"> * instance on VerseKey (or descendent) is created.</font>
+00208 <font class="comment"> */</font>
+00209
+<a name="l00210"></a><a class="code" href="class_verse_key.html#c2">00210</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#c2">VerseKey::initstatics</a>() {
+00211 <font class="keywordtype">int</font> l1, l2, chaptmp = 0;
+00212
+00213 builtin_books[0] = otbooks;
+00214 builtin_books[1] = ntbooks;
+00215
+00216 <font class="keywordflow">for</font> (l1 = 0; l1 &lt; 2; l1++) {
+00217 <font class="keywordflow">for</font> (l2 = 0; l2 &lt; builtin_BMAX[l1]; l2++) {
+00218 builtin_books[l1][l2].versemax = &amp;vm[chaptmp];
+00219 chaptmp += builtin_books[l1][l2].chapmax;
+00220 }
+00221 }
+00222 }
+00223
+00224
+00225 <font class="comment">/******************************************************************************</font>
+00226 <font class="comment"> * VerseKey::parse - parses keytext into testament|book|chapter|verse</font>
+00227 <font class="comment"> *</font>
+00228 <font class="comment"> * RET: error status</font>
+00229 <font class="comment"> */</font>
+00230
+<a name="l00231"></a><a class="code" href="class_verse_key.html#c5">00231</a> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#c5">VerseKey::parse</a>()
+00232 {
+00233
+00234
+00235 <a class="code" href="class_verse_key.html#o4">testament</a> = 1;
+00236 book = 1;
+00237 chapter = 1;
+00238 verse = 1;
+00239
+00240 error = 0;
+00241
+00242 <font class="keywordflow">if</font> (keytext) {
+00243 <a class="code" href="class_list_key.html">ListKey</a> tmpListKey = VerseKey::ParseVerseList(keytext);
+00244 <font class="keywordflow">if</font> (tmpListKey.<a class="code" href="class_list_key.html#a5">Count</a>()) {
+00245 <a class="code" href="class_s_w_key.html#a7">SWKey::setText</a>((<font class="keyword">const</font> <font class="keywordtype">char</font> *)tmpListKey);
+00246 <font class="keywordflow">for</font> (<a class="code" href="class_verse_key.html#o4">testament</a> = 1; <a class="code" href="class_verse_key.html#o4">testament</a> &lt; 3; <a class="code" href="class_verse_key.html#o4">testament</a>++) {
+00247 <font class="keywordflow">for</font> (book = 1; book &lt;= BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]; book++) {
+00248 <font class="keywordflow">if</font> (!strncmp(keytext, books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].name, strlen(books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].name)))
+00249 <font class="keywordflow">break</font>;
+00250 }
+00251 <font class="keywordflow">if</font> (book &lt;= BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1])
+00252 <font class="keywordflow">break</font>;
+00253 }
+00254
+00255 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 3) {
+00256 sscanf(&amp;keytext[strlen(books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].name)], <font class="stringliteral">"%d:%d"</font>, &amp;chapter, &amp;verse);
+00257 }
+00258 <font class="keywordflow">else</font> error = 1;
+00259 }
+00260 }
+00261 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+00262 <a class="code" href="class_verse_key.html#c4">freshtext</a>();
+00263
+00264 <font class="keywordflow">return</font> error;
+00265 }
+00266
+00267
+00268 <font class="comment">/******************************************************************************</font>
+00269 <font class="comment"> * VerseKey::freshtext - refreshes keytext based on</font>
+00270 <font class="comment"> * testament|book|chapter|verse</font>
+00271 <font class="comment"> */</font>
+00272
+<a name="l00273"></a><a class="code" href="class_verse_key.html#c4">00273</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#c4">VerseKey::freshtext</a>()<font class="keyword"> const</font>
+00274 <font class="keyword"></font>{
+00275 <font class="keywordtype">char</font> buf[2024];
+00276 <font class="keywordtype">int</font> realtest = <a class="code" href="class_verse_key.html#o4">testament</a>;
+00277 <font class="keywordtype">int</font> realbook = book;
+00278
+00279 <font class="keywordflow">if</font> (book &lt; 1) {
+00280 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 1)
+00281 sprintf(buf, <font class="stringliteral">"[ Module Heading ]"</font>);
+00282 <font class="keywordflow">else</font> sprintf(buf, <font class="stringliteral">"[ Testament %d Heading ]"</font>, (<font class="keywordtype">int</font>)<a class="code" href="class_verse_key.html#o4">testament</a>);
+00283 }
+00284 <font class="keywordflow">else</font> {
+00285 <font class="keywordflow">if</font> (realbook &gt; BMAX[realtest-1]) {
+00286 realbook -= BMAX[realtest-1];
+00287 <font class="keywordflow">if</font> (realtest &lt; 2)
+00288 realtest++;
+00289 <font class="keywordflow">if</font> (realbook &gt; BMAX[realtest-1])
+00290 realbook = BMAX[realtest-1];
+00291 }
+00292 sprintf(buf, <font class="stringliteral">"%s %d:%d"</font>, books[realtest-1][realbook-1].name, chapter, verse);
+00293 }
+00294
+00295 stdstr((<font class="keywordtype">char</font> **)&amp;keytext, buf);
+00296 }
+00297
+00298
+00299
+00300 <font class="comment">/******************************************************************************</font>
+00301 <font class="comment"> * VerseKey::getBookAbbrev - Attempts to find a book abbreviation for a buffer</font>
+00302 <font class="comment"> *</font>
+00303 <font class="comment"> * ENT: abbr - key for which to search;</font>
+00304 <font class="comment"> * RET: book number or &lt; 0 = not valid</font>
+00305 <font class="comment"> */</font>
+00306
+00307 <font class="keywordtype">int</font> VerseKey::getBookAbbrev(<font class="keyword">const</font> <font class="keywordtype">char</font> *iabbr)
+00308 {
+00309 <font class="keywordtype">int</font> loop, diff, abLen, min, max, target, retVal = -1;
+00310
+00311 <font class="keywordtype">char</font> *abbr = 0;
+00312
+00313 stdstr(&amp;abbr, iabbr);
+00314 strstrip(abbr);
+00315 abLen = strlen(abbr);
+00316 <font class="keywordflow">for</font> (loop = 0; loop &lt; abLen; loop++)
+00317 abbr[loop] = SW_toupper(abbr[loop]);
+00318
+00319 <font class="keywordflow">if</font> (abLen) {
+00320 min = 0;
+00321 <font class="comment">// max = abbrevsCnt - 1;</font>
+00322 max = abbrevsCnt;
+00323 <font class="keywordflow">while</font>(1) {
+00324 target = min + ((max - min) / 2);
+00325 diff = strncmp(abbr, abbrevs[target].ab, abLen);
+00326 <font class="keywordflow">if</font> ((!diff)||(target &gt;= max)||(target &lt;= min))
+00327 <font class="keywordflow">break</font>;
+00328 <font class="keywordflow">if</font> (diff &gt; 0)
+00329 min = target;
+00330 <font class="keywordflow">else</font> max = target;
+00331 }
+00332 <font class="keywordflow">for</font> (; target &gt; 0; target--) {
+00333 <font class="keywordflow">if</font> (strncmp(abbr, abbrevs[target-1].ab, abLen))
+00334 <font class="keywordflow">break</font>;
+00335 }
+00336
+00337 retVal = (!diff) ? abbrevs[target].book : -1;
+00338 }
+00339 <font class="keyword">delete</font> [] abbr;
+00340 <font class="keywordflow">return</font> retVal;
+00341 }
+00342
+00343 <font class="comment">/******************************************************************************</font>
+00344 <font class="comment"> * VerseKey::ParseVerseList - Attempts to parse a buffer into separate</font>
+00345 <font class="comment"> * verse entries returned in a ListKey</font>
+00346 <font class="comment"> *</font>
+00347 <font class="comment"> * ENT: buf - buffer to parse;</font>
+00348 <font class="comment"> * defaultKey - if verse, chap, book, or testament is left off,</font>
+00349 <font class="comment"> * pull info from this key (ie. Gen 2:3; 4:5;</font>
+00350 <font class="comment"> * Gen would be used when parsing the 4:5 section)</font>
+00351 <font class="comment"> * expandRange - whether or not to expand eg. John 1:10-12 or just</font>
+00352 <font class="comment"> * save John 1:10</font>
+00353 <font class="comment"> *</font>
+00354 <font class="comment"> * RET: ListKey reference filled with verse entries contained in buf</font>
+00355 <font class="comment"> *</font>
+00356 <font class="comment"> * COMMENT: This code works but wreaks. Rewrite to make more maintainable.</font>
+00357 <font class="comment"> */</font>
+00358
+00359 <a class="code" href="class_list_key.html">ListKey</a> VerseKey::ParseVerseList(<font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *defaultKey, <font class="keywordtype">bool</font> expandRange) {
+00360 <a class="code" href="class_s_w_key.html">SWKey</a> textkey;
+00361
+00362 <font class="keywordtype">char</font> book[255];
+00363 <font class="keywordtype">char</font> number[255];
+00364 <font class="keywordtype">int</font> tobook = 0;
+00365 <font class="keywordtype">int</font> tonumber = 0;
+00366 <font class="keywordtype">int</font> chap = -1, verse = -1;
+00367 <font class="keywordtype">int</font> bookno = 0;
+00368 VerseKey curkey, lBound;
+00369 curkey.<a class="code" href="class_verse_key.html#a42">setLocale</a>(getLocale());
+00370 lBound.<a class="code" href="class_verse_key.html#a42">setLocale</a>(getLocale());
+00371 <font class="keywordtype">int</font> loop;
+00372 <font class="keywordtype">char</font> comma = 0;
+00373 <font class="keywordtype">char</font> dash = 0;
+00374 <font class="keyword">const</font> <font class="keywordtype">char</font> *orig = buf;
+00375 <a class="code" href="class_list_key.html">ListKey</a> tmpListKey;
+00376 <a class="code" href="class_list_key.html">ListKey</a> internalListKey;
+00377 <a class="code" href="class_s_w_key.html">SWKey</a> tmpDefaultKey = defaultKey;
+00378 <font class="keywordtype">char</font> lastPartial = 0;
+00379
+00380 curkey.<a class="code" href="class_verse_key.html#a31">AutoNormalize</a>(0);
+00381 tmpListKey &lt;&lt; tmpDefaultKey;
+00382 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00383
+00384 <font class="keywordflow">while</font> (*buf) {
+00385 <font class="keywordflow">switch</font> (*buf) {
+00386 <font class="keywordflow">case</font> <font class="charliteral">':'</font>:
+00387 number[tonumber] = 0;
+00388 tonumber = 0;
+00389 <font class="keywordflow">if</font> (*number)
+00390 chap = atoi(number);
+00391 *number = 0;
+00392 <font class="keywordflow">break</font>;
+00393
+00394 <font class="keywordflow">case</font> <font class="charliteral">'-'</font>:
+00395 <font class="keywordflow">case</font> <font class="charliteral">','</font>: <font class="comment">// on number new verse</font>
+00396 <font class="keywordflow">case</font> <font class="charliteral">';'</font>: <font class="comment">// on number new chapter</font>
+00397 number[tonumber] = 0;
+00398 tonumber = 0;
+00399 <font class="keywordflow">if</font> (*number) {
+00400 <font class="keywordflow">if</font> (chap &gt;= 0)
+00401 verse = atoi(number);
+00402 <font class="keywordflow">else</font> chap = atoi(number);
+00403 }
+00404 *number = 0;
+00405 book[tobook] = 0;
+00406 tobook = 0;
+00407 bookno = -1;
+00408 <font class="keywordflow">if</font> (*book) {
+00409 <font class="keywordflow">for</font> (loop = strlen(book) - 1; loop+1; loop--) {
+00410 <font class="keywordflow">if</font> ((isdigit(book[loop])) || (book[loop] == <font class="charliteral">' '</font>)) {
+00411 book[loop] = 0;
+00412 <font class="keywordflow">continue</font>;
+00413 }
+00414 <font class="keywordflow">else</font> {
+00415 <font class="keywordflow">if</font> ((SW_toupper(book[loop])==<font class="charliteral">'F'</font>)&amp;&amp;(loop)) {
+00416 <font class="keywordflow">if</font> ((isdigit(book[loop-1])) || (book[loop-1] == <font class="charliteral">' '</font>) || (SW_toupper(book[loop-1]) == <font class="charliteral">'F'</font>)) {
+00417 book[loop] = 0;
+00418 <font class="keywordflow">continue</font>;
+00419 }
+00420 }
+00421 }
+00422 <font class="keywordflow">break</font>;
+00423 }
+00424
+00425 <font class="keywordflow">for</font> (loop = strlen(book) - 1; loop+1; loop--) {
+00426 <font class="keywordflow">if</font> (book[loop] == <font class="charliteral">' '</font>) {
+00427 <font class="keywordflow">if</font> (isroman(&amp;book[loop+1])) {
+00428 <font class="keywordflow">if</font> (verse == -1) {
+00429 verse = chap;
+00430 chap = from_rom(&amp;book[loop+1]);
+00431 book[loop] = 0;
+00432 }
+00433 }
+00434 <font class="keywordflow">break</font>;
+00435 }
+00436 }
+00437
+00438 <font class="keywordflow">if</font> ((!stricmp(book, <font class="stringliteral">"V"</font>)) || (!stricmp(book, <font class="stringliteral">"VER"</font>))) { <font class="comment">// Verse abbrev</font>
+00439 <font class="keywordflow">if</font> (verse == -1) {
+00440 verse = chap;
+00441 chap = <a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).Chapter();
+00442 *book = 0;
+00443 }
+00444 }
+00445 bookno = getBookAbbrev(book);
+00446 }
+00447 <font class="keywordflow">if</font> (((bookno &gt; -1) || (!*book)) &amp;&amp; ((*book) || (chap &gt;= 0) || (verse &gt;= 0))) {
+00448 <font class="keywordtype">char</font> partial = 0;
+00449 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00450 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00451 curkey.<a class="code" href="class_verse_key.html#a23">Book</a>(1);
+00452
+00453 <font class="keywordflow">if</font> (bookno &lt; 0) {
+00454 curkey.<a class="code" href="class_verse_key.html#a22">Testament</a>(<a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).<a class="code" href="class_verse_key.html#a22">Testament</a>());
+00455 curkey.<a class="code" href="class_verse_key.html#a23">Book</a>(<a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).<a class="code" href="class_verse_key.html#a23">Book</a>());
+00456 }
+00457 <font class="keywordflow">else</font> {
+00458 curkey.<a class="code" href="class_verse_key.html#a22">Testament</a>(1);
+00459 curkey.<a class="code" href="class_verse_key.html#a23">Book</a>(bookno);
+00460 }
+00461
+00462 <font class="keywordflow">if</font> (((comma)||((verse &lt; 0)&amp;&amp;(bookno &lt; 0)))&amp;&amp;(!lastPartial)) {
+00463 <font class="comment">// if (comma) {</font>
+00464 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(<a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).<a class="code" href="class_verse_key.html#a24">Chapter</a>());
+00465 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(chap); <font class="comment">// chap because this is the first number captured</font>
+00466 }
+00467 <font class="keywordflow">else</font> {
+00468 <font class="keywordflow">if</font> (chap &gt;= 0) {
+00469 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(chap);
+00470 }
+00471 <font class="keywordflow">else</font> {
+00472 partial++;
+00473 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00474 }
+00475 <font class="keywordflow">if</font> (verse &gt;= 0) {
+00476 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(verse);
+00477 }
+00478 <font class="keywordflow">else</font> {
+00479 partial++;
+00480 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00481 }
+00482 }
+00483
+00484 <font class="keywordflow">if</font> ((*buf == <font class="charliteral">'-'</font>) &amp;&amp; (expandRange)) { <font class="comment">// if this is a dash save lowerBound and wait for upper</font>
+00485 VerseKey newElement;
+00486 newElement.<a class="code" href="class_verse_key.html#a5">LowerBound</a>(curkey);
+00487 newElement.<a class="code" href="class_verse_key.html#a16">setPosition</a>(TOP);
+00488 tmpListKey &lt;&lt; newElement;
+00489 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00490 }
+00491 <font class="keywordflow">else</font> {
+00492 <font class="keywordflow">if</font> (!dash) { <font class="comment">// if last separator was not a dash just add</font>
+00493 <font class="keywordflow">if</font> (expandRange &amp;&amp; partial) {
+00494 VerseKey newElement;
+00495 newElement.<a class="code" href="class_verse_key.html#a5">LowerBound</a>(curkey);
+00496 <font class="keywordflow">if</font> (partial &gt; 1)
+00497 curkey.<a class="code" href="class_verse_key.html#a16">setPosition</a>(MAXCHAPTER);
+00498 <font class="keywordflow">if</font> (partial &gt; 0)
+00499 curkey = MAXVERSE;
+00500 newElement.<a class="code" href="class_verse_key.html#a6">UpperBound</a>(curkey);
+00501 newElement = TOP;
+00502 tmpListKey &lt;&lt; newElement;
+00503 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00504 }
+00505 <font class="keywordflow">else</font> {
+00506 tmpListKey &lt;&lt; (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;)(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a>)(<font class="keyword">const</font> <font class="keywordtype">char</font> *)curkey;
+00507 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00508 }
+00509 }
+00510 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (expandRange) {
+00511 VerseKey *newElement = SWDYNAMIC_CAST(VerseKey, tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>());
+00512 <font class="keywordflow">if</font> (newElement) {
+00513 <font class="keywordflow">if</font> (partial &gt; 1)
+00514 curkey = MAXCHAPTER;
+00515 <font class="keywordflow">if</font> (partial &gt; 0)
+00516 curkey = MAXVERSE;
+00517 newElement-&gt;<a class="code" href="class_verse_key.html#a6">UpperBound</a>(curkey);
+00518 *newElement = TOP;
+00519 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00520 }
+00521 }
+00522 }
+00523 lastPartial = partial;
+00524 }
+00525 *book = 0;
+00526 chap = -1;
+00527 verse = -1;
+00528 <font class="keywordflow">if</font> (*buf == <font class="charliteral">','</font>)
+00529 comma = 1;
+00530 <font class="keywordflow">else</font> comma = 0;
+00531 <font class="keywordflow">if</font> (*buf == <font class="charliteral">'-'</font>)
+00532 dash = 1;
+00533 <font class="keywordflow">else</font> dash = 0;
+00534 <font class="keywordflow">break</font>;
+00535 <font class="keywordflow">case</font> 10: <font class="comment">// ignore these</font>
+00536 <font class="keywordflow">case</font> 13:
+00537 <font class="keywordflow">break</font>;
+00538 <font class="keywordflow">case</font> <font class="charliteral">'.'</font>:
+00539 <font class="keywordflow">if</font> (buf &gt; orig) <font class="comment">// ignore (break) if preceeding char is not a digit</font>
+00540 <font class="keywordflow">if</font> (!isdigit(*(buf-1)))
+00541 <font class="keywordflow">break</font>;
+00542
+00543 <font class="keywordflow">default</font>:
+00544 <font class="keywordflow">if</font> (isdigit(*buf)) {
+00545 number[tonumber++] = *buf;
+00546 }
+00547 <font class="keywordflow">else</font> {
+00548 <font class="keywordflow">switch</font> (*buf) {
+00549 <font class="keywordflow">case</font> <font class="charliteral">' '</font>: <font class="comment">// ignore these and don't reset number</font>
+00550 <font class="keywordflow">case</font> <font class="charliteral">'f'</font>:
+00551 <font class="keywordflow">case</font> <font class="charliteral">'F'</font>:
+00552 <font class="keywordflow">break</font>;
+00553 <font class="keywordflow">default</font>:
+00554 number[tonumber] = 0;
+00555 tonumber = 0;
+00556 <font class="keywordflow">break</font>;
+00557 }
+00558 }
+00559 <font class="keywordflow">if</font> (chap == -1)
+00560 book[tobook++] = SW_toupper(*buf);
+00561 }
+00562 buf++;
+00563 }
+00564 number[tonumber] = 0;
+00565 tonumber = 0;
+00566 <font class="keywordflow">if</font> (*number) {
+00567 <font class="keywordflow">if</font> (chap &gt;= 0)
+00568 verse = atoi(number);
+00569 <font class="keywordflow">else</font> chap = atoi(number);
+00570 }
+00571 *number = 0;
+00572 book[tobook] = 0;
+00573 tobook = 0;
+00574 <font class="keywordflow">if</font> (*book) {
+00575 <font class="keywordflow">for</font> (loop = strlen(book) - 1; loop+1; loop--) {
+00576 <font class="keywordflow">if</font> ((isdigit(book[loop])) || (book[loop] == <font class="charliteral">' '</font>)) {
+00577 book[loop] = 0;
+00578 <font class="keywordflow">continue</font>;
+00579 }
+00580 <font class="keywordflow">else</font> {
+00581 <font class="keywordflow">if</font> ((SW_toupper(book[loop])==<font class="charliteral">'F'</font>)&amp;&amp;(loop)) {
+00582 <font class="keywordflow">if</font> ((isdigit(book[loop-1])) || (book[loop-1] == <font class="charliteral">' '</font>) || (SW_toupper(book[loop-1]) == <font class="charliteral">'F'</font>)) {
+00583 book[loop] = 0;
+00584 <font class="keywordflow">continue</font>;
+00585 }
+00586 }
+00587 }
+00588 <font class="keywordflow">break</font>;
+00589 }
+00590
+00591 <font class="keywordflow">for</font> (loop = strlen(book) - 1; loop+1; loop--) {
+00592 <font class="keywordflow">if</font> (book[loop] == <font class="charliteral">' '</font>) {
+00593 <font class="keywordflow">if</font> (isroman(&amp;book[loop+1])) {
+00594 <font class="keywordflow">if</font> (verse == -1) {
+00595 verse = chap;
+00596 chap = from_rom(&amp;book[loop+1]);
+00597 book[loop] = 0;
+00598 }
+00599 }
+00600 <font class="keywordflow">break</font>;
+00601 }
+00602 }
+00603
+00604 <font class="keywordflow">if</font> ((!stricmp(book, <font class="stringliteral">"V"</font>)) || (!stricmp(book, <font class="stringliteral">"VER"</font>))) { <font class="comment">// Verse abbrev.</font>
+00605 <font class="keywordflow">if</font> (verse == -1) {
+00606 verse = chap;
+00607 chap = <a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).Chapter();
+00608 *book = 0;
+00609 }
+00610 }
+00611
+00612 bookno = getBookAbbrev(book);
+00613 }
+00614 <font class="keywordflow">if</font> (((bookno &gt; -1) || (!*book)) &amp;&amp; ((*book) || (chap &gt;= 0) || (verse &gt;= 0))) {
+00615 <font class="keywordtype">char</font> partial = 0;
+00616 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00617 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00618 curkey.<a class="code" href="class_verse_key.html#a23">Book</a>(1);
+00619
+00620 <font class="keywordflow">if</font> (bookno &lt; 0) {
+00621 curkey.<a class="code" href="class_verse_key.html#a22">Testament</a>(<a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).<a class="code" href="class_verse_key.html#a22">Testament</a>());
+00622 curkey.<a class="code" href="class_verse_key.html#a23">Book</a>(<a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).<a class="code" href="class_verse_key.html#a23">Book</a>());
+00623 }
+00624 <font class="keywordflow">else</font> {
+00625 curkey.<a class="code" href="class_verse_key.html#a22">Testament</a>(1);
+00626 curkey.<a class="code" href="class_verse_key.html#a23">Book</a>(bookno);
+00627 }
+00628
+00629 <font class="keywordflow">if</font> (((comma)||((verse &lt; 0)&amp;&amp;(bookno &lt; 0)))&amp;&amp;(!lastPartial)) {
+00630 <font class="comment">// if (comma) {</font>
+00631 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(<a class="code" href="class_verse_key.html#a0">VerseKey</a>(tmpListKey).<a class="code" href="class_verse_key.html#a24">Chapter</a>());
+00632 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(chap); <font class="comment">// chap because this is the first number captured</font>
+00633 }
+00634 <font class="keywordflow">else</font> {
+00635 <font class="keywordflow">if</font> (chap &gt;= 0) {
+00636 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(chap);
+00637 }
+00638 <font class="keywordflow">else</font> {
+00639 partial++;
+00640 curkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00641 }
+00642 <font class="keywordflow">if</font> (verse &gt;= 0) {
+00643 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(verse);
+00644 }
+00645 <font class="keywordflow">else</font> {
+00646 partial++;
+00647 curkey.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00648 }
+00649 }
+00650
+00651 <font class="keywordflow">if</font> ((*buf == <font class="charliteral">'-'</font>) &amp;&amp; (expandRange)) { <font class="comment">// if this is a dash save lowerBound and wait for upper</font>
+00652 VerseKey newElement;
+00653 newElement.<a class="code" href="class_verse_key.html#a5">LowerBound</a>(curkey);
+00654 newElement = TOP;
+00655 tmpListKey &lt;&lt; newElement;
+00656 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00657 }
+00658 <font class="keywordflow">else</font> {
+00659 <font class="keywordflow">if</font> (!dash) { <font class="comment">// if last separator was not a dash just add</font>
+00660 <font class="keywordflow">if</font> (expandRange &amp;&amp; partial) {
+00661 VerseKey newElement;
+00662 newElement.<a class="code" href="class_verse_key.html#a5">LowerBound</a>(curkey);
+00663 <font class="keywordflow">if</font> (partial &gt; 1)
+00664 curkey = MAXCHAPTER;
+00665 <font class="keywordflow">if</font> (partial &gt; 0)
+00666 curkey = MAXVERSE;
+00667 newElement.<a class="code" href="class_verse_key.html#a6">UpperBound</a>(curkey);
+00668 newElement = TOP;
+00669 tmpListKey &lt;&lt; newElement;
+00670 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00671 }
+00672 <font class="keywordflow">else</font> {
+00673 tmpListKey &lt;&lt; (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;)(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a>)(<font class="keyword">const</font> <font class="keywordtype">char</font> *)curkey;
+00674 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00675 }
+00676 }
+00677 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (expandRange) {
+00678 VerseKey *newElement = SWDYNAMIC_CAST(VerseKey, tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>());
+00679 <font class="keywordflow">if</font> (newElement) {
+00680 <font class="keywordflow">if</font> (partial &gt; 1)
+00681 curkey = MAXCHAPTER;
+00682 <font class="keywordflow">if</font> (partial &gt; 0)
+00683 curkey = MAXVERSE;
+00684 newElement-&gt;<a class="code" href="class_verse_key.html#a6">UpperBound</a>(curkey);
+00685 *newElement = TOP;
+00686 tmpListKey.<a class="code" href="class_list_key.html#a8">GetElement</a>()-&gt;<a class="code" href="class_s_w_key.html#m0">userData</a> = (<font class="keywordtype">void</font> *)buf;
+00687 }
+00688 }
+00689 }
+00690 }
+00691 *book = 0;
+00692 tmpListKey = TOP;
+00693 tmpListKey.<a class="code" href="class_list_key.html#a6">Remove</a>(); <font class="comment">// remove defaultKey</font>
+00694 internalListKey = tmpListKey;
+00695 internalListKey = TOP; <font class="comment">// Align internalListKey to first element before passing back;</font>
+00696
+00697 <font class="keywordflow">return</font> internalListKey;
+00698 }
+00699
+00700
+00701 <font class="comment">/******************************************************************************</font>
+00702 <font class="comment"> * VerseKey::LowerBound - sets / gets the lower boundary for this key</font>
+00703 <font class="comment"> */</font>
+00704
+<a name="l00705"></a><a class="code" href="class_verse_key.html#a5">00705</a> VerseKey &amp;<a class="code" href="class_verse_key.html#a7">VerseKey::LowerBound</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *lb)
+00706 {
+00707 <font class="keywordflow">if</font> (!lowerBound)
+00708 initBounds();
+00709
+00710 (*lowerBound) = lb;
+00711 lowerBound-&gt;<a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00712
+00713 <font class="keywordflow">return</font> (*lowerBound);
+00714 }
+00715
+00716
+00717 <font class="comment">/******************************************************************************</font>
+00718 <font class="comment"> * VerseKey::UpperBound - sets / gets the upper boundary for this key</font>
+00719 <font class="comment"> */</font>
+00720
+<a name="l00721"></a><a class="code" href="class_verse_key.html#a6">00721</a> VerseKey &amp;<a class="code" href="class_verse_key.html#a8">VerseKey::UpperBound</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ub)
+00722 {
+00723 <font class="keywordflow">if</font> (!upperBound)
+00724 initBounds();
+00725
+00726 <font class="comment">// need to set upperbound parsing to resolve to max verse/chap if not specified</font>
+00727 (*upperBound) = ub;
+00728 <font class="keywordflow">if</font> (*upperBound &lt; *lowerBound)
+00729 *upperBound = *lowerBound;
+00730 upperBound-&gt;<a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00731
+00732 <font class="comment">// until we have a proper method to resolve max verse/chap use this kludge</font>
+00733 <font class="keywordtype">int</font> len = strlen(ub);
+00734 <font class="keywordtype">bool</font> alpha = <font class="keyword">false</font>;
+00735 <font class="keywordtype">bool</font> versespec = <font class="keyword">false</font>;
+00736 <font class="keywordtype">bool</font> chapspec = <font class="keyword">false</font>;
+00737 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; len; i++) {
+00738 <font class="keywordflow">if</font> (isalpha(ub[i]))
+00739 alpha = <font class="keyword">true</font>;
+00740 <font class="keywordflow">if</font> (ub[i] == <font class="charliteral">':'</font>) <font class="comment">// if we have a : we assume verse spec</font>
+00741 versespec = <font class="keyword">true</font>;
+00742 <font class="keywordflow">if</font> ((isdigit(ub[i])) &amp;&amp; (alpha)) <font class="comment">// if digit after alpha assume chap spec</font>
+00743 chapspec = <font class="keyword">true</font>;
+00744 }
+00745 <font class="keywordflow">if</font> (!chapspec)
+00746 *upperBound = MAXCHAPTER;
+00747 <font class="keywordflow">if</font> (!versespec)
+00748 *upperBound = MAXVERSE;
+00749
+00750
+00751 <font class="comment">// -- end kludge</font>
+00752
+00753 <font class="keywordflow">return</font> (*upperBound);
+00754 }
+00755
+00756
+00757 <font class="comment">/******************************************************************************</font>
+00758 <font class="comment"> * VerseKey::LowerBound - sets / gets the lower boundary for this key</font>
+00759 <font class="comment"> */</font>
+00760
+<a name="l00761"></a><a class="code" href="class_verse_key.html#a7">00761</a> VerseKey &amp;<a class="code" href="class_verse_key.html#a7">VerseKey::LowerBound</a>()<font class="keyword"> const</font>
+00762 <font class="keyword"></font>{
+00763 <font class="keywordflow">if</font> (!lowerBound)
+00764 initBounds();
+00765
+00766 <font class="keywordflow">return</font> (*lowerBound);
+00767 }
+00768
+00769
+00770 <font class="comment">/******************************************************************************</font>
+00771 <font class="comment"> * VerseKey::UpperBound - sets / gets the upper boundary for this key</font>
+00772 <font class="comment"> */</font>
+00773
+<a name="l00774"></a><a class="code" href="class_verse_key.html#a8">00774</a> VerseKey &amp;<a class="code" href="class_verse_key.html#a8">VerseKey::UpperBound</a>()<font class="keyword"> const</font>
+00775 <font class="keyword"></font>{
+00776 <font class="keywordflow">if</font> (!upperBound)
+00777 initBounds();
+00778
+00779 <font class="keywordflow">return</font> (*upperBound);
+00780 }
+00781
+00782
+00783 <font class="comment">/******************************************************************************</font>
+00784 <font class="comment"> * VerseKey::ClearBounds - clears bounds for this VerseKey</font>
+00785 <font class="comment"> */</font>
+00786
+<a name="l00787"></a><a class="code" href="class_verse_key.html#a9">00787</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a9">VerseKey::ClearBounds</a>()
+00788 {
+00789 initBounds();
+00790 }
+00791
+00792
+00793 <font class="keywordtype">void</font> VerseKey::initBounds()<font class="keyword"> const</font>
+00794 <font class="keyword"></font>{
+00795 <font class="keywordflow">if</font> (!upperBound) {
+00796 upperBound = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>();
+00797 upperBound-&gt;<a class="code" href="class_verse_key.html#a31">AutoNormalize</a>(0);
+00798 upperBound-&gt;<a class="code" href="class_verse_key.html#a32">Headings</a>(1);
+00799 }
+00800 <font class="keywordflow">if</font> (!lowerBound) {
+00801 lowerBound = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>();
+00802 lowerBound-&gt;<a class="code" href="class_verse_key.html#a31">AutoNormalize</a>(0);
+00803 lowerBound-&gt;<a class="code" href="class_verse_key.html#a32">Headings</a>(1);
+00804 }
+00805
+00806 lowerBound-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(0);
+00807 lowerBound-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>(0);
+00808 lowerBound-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>(0);
+00809 lowerBound-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>(0);
+00810
+00811 upperBound-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(2);
+00812 upperBound-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>(BMAX[1]);
+00813 upperBound-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>(books[1][BMAX[1]-1].chapmax);
+00814 upperBound-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>(books[1][BMAX[1]-1].versemax[upperBound-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>()-1]);
+00815 }
+00816
+00817
+00818 <font class="comment">/******************************************************************************</font>
+00819 <font class="comment"> * VerseKey::copyFrom - Equates this VerseKey to another VerseKey</font>
+00820 <font class="comment"> */</font>
+00821
+<a name="l00822"></a><a class="code" href="class_verse_key.html#a15">00822</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a14">VerseKey::copyFrom</a>(<font class="keyword">const</font> VerseKey &amp;ikey) {
+00823 <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey);
+00824
+00825 <a class="code" href="class_verse_key.html#c5">parse</a>();
+00826 }
+00827
+00828
+00829 <font class="comment">/******************************************************************************</font>
+00830 <font class="comment"> * VerseKey::copyFrom - Equates this VerseKey to another SWKey</font>
+00831 <font class="comment"> */</font>
+00832
+<a name="l00833"></a><a class="code" href="class_verse_key.html#a14">00833</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a14">VerseKey::copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey) {
+00834 <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey);
+00835
+00836 <a class="code" href="class_verse_key.html#c5">parse</a>();
+00837 }
+00838
+00839
+00840 <font class="comment">/******************************************************************************</font>
+00841 <font class="comment"> * VerseKey::getText - refreshes keytext before returning if cast to</font>
+00842 <font class="comment"> * a (char *) is requested</font>
+00843 <font class="comment"> */</font>
+00844
+<a name="l00845"></a><a class="code" href="class_verse_key.html#a11">00845</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_verse_key.html#a11">VerseKey::getText</a>()<font class="keyword"> const </font>{
+00846 <a class="code" href="class_verse_key.html#c4">freshtext</a>();
+00847 <font class="keywordflow">return</font> keytext;
+00848 }
+00849
+00850
+00851 <font class="keyword">const</font> <font class="keywordtype">char</font> *VerseKey::getShortText()<font class="keyword"> const </font>{
+00852 <font class="keyword">static</font> <font class="keywordtype">char</font> *stext = 0;
+00853 <font class="keywordtype">char</font> buf[2047];
+00854 <a class="code" href="class_verse_key.html#c4">freshtext</a>();
+00855 <font class="keywordflow">if</font> (book &lt; 1) {
+00856 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 1)
+00857 sprintf(buf, <font class="stringliteral">"[ Module Heading ]"</font>);
+00858 <font class="keywordflow">else</font> sprintf(buf, <font class="stringliteral">"[ Testament %d Heading ]"</font>, (<font class="keywordtype">int</font>)<a class="code" href="class_verse_key.html#o4">testament</a>);
+00859 }
+00860 <font class="keywordflow">else</font> {
+00861 sprintf(buf, <font class="stringliteral">"%s %d:%d"</font>, books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].prefAbbrev, chapter, verse);
+00862 }
+00863 stdstr(&amp;stext, buf);
+00864 <font class="keywordflow">return</font> stext;
+00865 }
+00866
+00867
+00868 <font class="keyword">const</font> <font class="keywordtype">char</font> *VerseKey::getBookName()<font class="keyword"> const </font>{
+00869 <font class="keywordflow">return</font> books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].name;
+00870 }
+00871
+00872
+00873 <font class="keyword">const</font> <font class="keywordtype">char</font> *VerseKey::getBookAbbrev()<font class="keyword"> const </font>{
+00874 <font class="keywordflow">return</font> books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].prefAbbrev;
+00875 }
+00876 <font class="comment">/******************************************************************************</font>
+00877 <font class="comment"> * VerseKey::setPosition(SW_POSITION) - Positions this key</font>
+00878 <font class="comment"> *</font>
+00879 <font class="comment"> * ENT: p - position</font>
+00880 <font class="comment"> *</font>
+00881 <font class="comment"> * RET: *this</font>
+00882 <font class="comment"> */</font>
+00883
+<a name="l00884"></a><a class="code" href="class_verse_key.html#a16">00884</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a16">VerseKey::setPosition</a>(SW_POSITION p) {
+00885 <font class="keywordflow">switch</font> (p) {
+00886 <font class="keywordflow">case</font> POS_TOP:
+00887 <a class="code" href="class_verse_key.html#o4">testament</a> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00888 book = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a23">Book</a>();
+00889 chapter = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00890 verse = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00891 <font class="keywordflow">break</font>;
+00892 <font class="keywordflow">case</font> POS_BOTTOM:
+00893 <a class="code" href="class_verse_key.html#o4">testament</a> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00894 book = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a23">Book</a>();
+00895 chapter = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00896 verse = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00897 <font class="keywordflow">break</font>;
+00898 <font class="keywordflow">case</font> POS_MAXVERSE:
+00899 <a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00900 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+00901 <font class="keywordflow">break</font>;
+00902 <font class="keywordflow">case</font> POS_MAXCHAPTER:
+00903 verse = 1;
+00904 <a class="code" href="class_verse_key.html#a30">Normalize</a>();
+00905 chapter = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+00906 <font class="keywordflow">break</font>;
+00907 }
+00908 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+00909 <a class="code" href="class_s_w_key.html#a6">Error</a>(); <font class="comment">// clear error from normalize</font>
+00910 }
+00911
+00912
+00913 <font class="comment">/******************************************************************************</font>
+00914 <font class="comment"> * VerseKey::increment - Increments key a number of verses</font>
+00915 <font class="comment"> *</font>
+00916 <font class="comment"> * ENT: step - Number of verses to jump forward</font>
+00917 <font class="comment"> *</font>
+00918 <font class="comment"> * RET: *this</font>
+00919 <font class="comment"> */</font>
+00920
+<a name="l00921"></a><a class="code" href="class_verse_key.html#a18">00921</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a18">VerseKey::increment</a>(<font class="keywordtype">int</font> step) {
+00922 <font class="keywordtype">char</font> ierror = 0;
+00923 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() + step);
+00924 <font class="keywordflow">while</font> ((!verse) &amp;&amp; (!<a class="code" href="class_verse_key.html#o9">headings</a>) &amp;&amp; (!ierror)) {
+00925 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() + 1);
+00926 ierror = <a class="code" href="class_s_w_key.html#a6">Error</a>();
+00927 }
+00928
+00929 error = (ierror) ? ierror : error;
+00930 }
+00931
+00932
+00933 <font class="comment">/******************************************************************************</font>
+00934 <font class="comment"> * VerseKey::decrement - Decrements key a number of verses</font>
+00935 <font class="comment"> *</font>
+00936 <font class="comment"> * ENT: step - Number of verses to jump backward</font>
+00937 <font class="comment"> *</font>
+00938 <font class="comment"> * RET: *this</font>
+00939 <font class="comment"> */</font>
+00940
+<a name="l00941"></a><a class="code" href="class_verse_key.html#a17">00941</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a17">VerseKey::decrement</a>(<font class="keywordtype">int</font> step) {
+00942 <font class="keywordtype">char</font> ierror = 0;
+00943
+00944 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() - step);
+00945 <font class="keywordflow">while</font> ((!verse) &amp;&amp; (!<a class="code" href="class_verse_key.html#o9">headings</a>) &amp;&amp; (!ierror)) {
+00946 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() - 1);
+00947 ierror = <a class="code" href="class_s_w_key.html#a6">Error</a>();
+00948 }
+00949 <font class="keywordflow">if</font> ((ierror) &amp;&amp; (!<a class="code" href="class_verse_key.html#o9">headings</a>))
+00950 (*this)++;
+00951
+00952 error = (ierror) ? ierror : error;
+00953 }
+00954
+00955
+00956 <font class="comment">/******************************************************************************</font>
+00957 <font class="comment"> * VerseKey::Normalize - checks limits and normalizes if necessary (e.g.</font>
+00958 <font class="comment"> * Matthew 29:47 = Mark 2:2). If last verse is</font>
+00959 <font class="comment"> * exceeded, key is set to last Book CH:VS</font>
+00960 <font class="comment"> * RET: *this</font>
+00961 <font class="comment"> */</font>
+00962
+<a name="l00963"></a><a class="code" href="class_verse_key.html#a30">00963</a> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a30">VerseKey::Normalize</a>(<font class="keywordtype">char</font> autocheck)
+00964 {
+00965 error = 0;
+00966
+00967 <font class="keywordflow">if</font> ((autocheck) &amp;&amp; (!<a class="code" href="class_verse_key.html#o8">autonorm</a>)) <font class="comment">// only normalize if we were explicitely called or if autonorm is turned on</font>
+00968 <font class="keywordflow">return</font>;
+00969
+00970 <font class="keywordflow">if</font> ((headings) &amp;&amp; (!verse)) <font class="comment">// this is cheeze and temporary until deciding what actions should be taken.</font>
+00971 <font class="keywordflow">return</font>; <font class="comment">// so headings should only be turned on when positioning with Index() or incrementors</font>
+00972
+00973 <font class="keywordflow">while</font> ((testament &lt; 3) &amp;&amp; (testament &gt; 0)) {
+00974
+00975 <font class="keywordflow">if</font> (book &gt; BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]) {
+00976 book -= BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
+00977 <a class="code" href="class_verse_key.html#o4">testament</a>++;
+00978 <font class="keywordflow">continue</font>;
+00979 }
+00980
+00981 <font class="keywordflow">if</font> (book &lt; 1) {
+00982 <font class="keywordflow">if</font> (--<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 0) {
+00983 book += BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
+00984 }
+00985 <font class="keywordflow">continue</font>;
+00986 }
+00987
+00988 <font class="keywordflow">if</font> (chapter &gt; books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax) {
+00989 chapter -= books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+00990 book++;
+00991 <font class="keywordflow">continue</font>;
+00992 }
+00993
+00994 <font class="keywordflow">if</font> (chapter &lt; 1) {
+00995 <font class="keywordflow">if</font> (--book &gt; 0) {
+00996 chapter += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+00997 }
+00998 <font class="keywordflow">else</font> {
+00999 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 1) {
+01000 chapter += books[0][BMAX[0]-1].chapmax;
+01001 }
+01002 }
+01003 <font class="keywordflow">continue</font>;
+01004 }
+01005
+01006 <font class="keywordflow">if</font> (verse &gt; books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1]) { <font class="comment">// -1 because e.g chapter 1 of Matthew is books[1][0].versemax[0]</font>
+01007 verse -= books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter++ - 1];
+01008 <font class="keywordflow">continue</font>;
+01009 }
+01010
+01011 <font class="keywordflow">if</font> (verse &lt; 1) {
+01012 <font class="keywordflow">if</font> (--chapter &gt; 0) {
+01013 verse += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+01014 }
+01015 <font class="keywordflow">else</font> {
+01016 <font class="keywordflow">if</font> (book &gt; 1) {
+01017 verse += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-2].versemax[books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-2].chapmax-1];
+01018 }
+01019 <font class="keywordflow">else</font> {
+01020 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 1) {
+01021 verse += books[0][BMAX[0]-1].versemax[books[0][BMAX[0]-1].chapmax-1];
+01022 }
+01023 }
+01024 }
+01025 <font class="keywordflow">continue</font>;
+01026 }
+01027
+01028 <font class="keywordflow">break</font>; <font class="comment">// If we've made it this far (all failure checks continue) we're ok</font>
+01029 }
+01030
+01031 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 2) {
+01032 <a class="code" href="class_verse_key.html#o4">testament</a> = 2;
+01033 book = BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
+01034 chapter = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
+01035 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+01036 error = KEYERR_OUTOFBOUNDS;
+01037 }
+01038
+01039 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 1) {
+01040 error = ((!<a class="code" href="class_verse_key.html#o9">headings</a>) || (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 0) || (book &lt; 0)) ? KEYERR_OUTOFBOUNDS : 0;
+01041 <a class="code" href="class_verse_key.html#o4">testament</a> = ((headings) ? 0 : 1);
+01042 book = ((headings) ? 0 : 1);
+01043 chapter = ((headings) ? 0 : 1);
+01044 verse = ((headings) ? 0 : 1);
+01045 }
+01046 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a8">UpperBound</a>()) &gt; 0) {
+01047 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>();
+01048 error = KEYERR_OUTOFBOUNDS;
+01049 }
+01050 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a7">LowerBound</a>()) &lt; 0) {
+01051 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>();
+01052 error = KEYERR_OUTOFBOUNDS;
+01053 }
+01054 }
+01055
+01056
+01057 <font class="comment">/******************************************************************************</font>
+01058 <font class="comment"> * VerseKey::Testament - Gets testament</font>
+01059 <font class="comment"> *</font>
+01060 <font class="comment"> * RET: value of testament</font>
+01061 <font class="comment"> */</font>
+01062
+<a name="l01063"></a><a class="code" href="class_verse_key.html#a22">01063</a> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a22">VerseKey::Testament</a>()<font class="keyword"> const</font>
+01064 <font class="keyword"></font>{
+01065 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#o4">testament</a>;
+01066 }
+01067
+01068
+01069 <font class="comment">/******************************************************************************</font>
+01070 <font class="comment"> * VerseKey::Book - Gets book</font>
+01071 <font class="comment"> *</font>
+01072 <font class="comment"> * RET: value of book</font>
+01073 <font class="comment"> */</font>
+01074
+<a name="l01075"></a><a class="code" href="class_verse_key.html#a23">01075</a> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a23">VerseKey::Book</a>()<font class="keyword"> const</font>
+01076 <font class="keyword"></font>{
+01077 <font class="keywordflow">return</font> book;
+01078 }
+01079
+01080
+01081 <font class="comment">/******************************************************************************</font>
+01082 <font class="comment"> * VerseKey::Chapter - Gets chapter</font>
+01083 <font class="comment"> *</font>
+01084 <font class="comment"> * RET: value of chapter</font>
+01085 <font class="comment"> */</font>
+01086
+<a name="l01087"></a><a class="code" href="class_verse_key.html#a24">01087</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a24">VerseKey::Chapter</a>()<font class="keyword"> const</font>
+01088 <font class="keyword"></font>{
+01089 <font class="keywordflow">return</font> chapter;
+01090 }
+01091
+01092
+01093 <font class="comment">/******************************************************************************</font>
+01094 <font class="comment"> * VerseKey::Verse - Gets verse</font>
+01095 <font class="comment"> *</font>
+01096 <font class="comment"> * RET: value of verse</font>
+01097 <font class="comment"> */</font>
+01098
+<a name="l01099"></a><a class="code" href="class_verse_key.html#a25">01099</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a25">VerseKey::Verse</a>()<font class="keyword"> const</font>
+01100 <font class="keyword"></font>{
+01101 <font class="keywordflow">return</font> verse;
+01102 }
+01103
+01104
+01105 <font class="comment">/******************************************************************************</font>
+01106 <font class="comment"> * VerseKey::Testament - Sets/gets testament</font>
+01107 <font class="comment"> *</font>
+01108 <font class="comment"> * ENT: itestament - value which to set testament</font>
+01109 <font class="comment"> * [MAXPOS(char)] - only get</font>
+01110 <font class="comment"> *</font>
+01111 <font class="comment"> * RET: if unchanged -&gt; value of testament</font>
+01112 <font class="comment"> * if changed -&gt; previous value of testament</font>
+01113 <font class="comment"> */</font>
+01114
+<a name="l01115"></a><a class="code" href="class_verse_key.html#a26">01115</a> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a22">VerseKey::Testament</a>(<font class="keywordtype">char</font> itestament)
+01116 {
+01117 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o4">testament</a>;
+01118
+01119 <font class="keywordflow">if</font> (itestament != MAXPOS(<font class="keywordtype">char</font>)) {
+01120 <a class="code" href="class_verse_key.html#o4">testament</a> = itestament;
+01121 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01122 }
+01123 <font class="keywordflow">return</font> retval;
+01124 }
+01125
+01126
+01127 <font class="comment">/******************************************************************************</font>
+01128 <font class="comment"> * VerseKey::Book - Sets/gets book</font>
+01129 <font class="comment"> *</font>
+01130 <font class="comment"> * ENT: ibook - value which to set book</font>
+01131 <font class="comment"> * [MAXPOS(char)] - only get</font>
+01132 <font class="comment"> *</font>
+01133 <font class="comment"> * RET: if unchanged -&gt; value of book</font>
+01134 <font class="comment"> * if changed -&gt; previous value of book</font>
+01135 <font class="comment"> */</font>
+01136
+<a name="l01137"></a><a class="code" href="class_verse_key.html#a27">01137</a> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a23">VerseKey::Book</a>(<font class="keywordtype">char</font> ibook)
+01138 {
+01139 <font class="keywordtype">char</font> retval = book;
+01140
+01141 <a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+01142 book = ibook;
+01143 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01144
+01145 <font class="keywordflow">return</font> retval;
+01146 }
+01147
+01148
+01149 <font class="comment">/******************************************************************************</font>
+01150 <font class="comment"> * VerseKey::Chapter - Sets/gets chapter</font>
+01151 <font class="comment"> *</font>
+01152 <font class="comment"> * ENT: ichapter - value which to set chapter</font>
+01153 <font class="comment"> * [MAXPOS(int)] - only get</font>
+01154 <font class="comment"> *</font>
+01155 <font class="comment"> * RET: if unchanged -&gt; value of chapter</font>
+01156 <font class="comment"> * if changed -&gt; previous value of chapter</font>
+01157 <font class="comment"> */</font>
+01158
+<a name="l01159"></a><a class="code" href="class_verse_key.html#a28">01159</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a24">VerseKey::Chapter</a>(<font class="keywordtype">int</font> ichapter)
+01160 {
+01161 <font class="keywordtype">int</font> retval = chapter;
+01162
+01163 <a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+01164 chapter = ichapter;
+01165 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01166
+01167 <font class="keywordflow">return</font> retval;
+01168 }
+01169
+01170
+01171 <font class="comment">/******************************************************************************</font>
+01172 <font class="comment"> * VerseKey::Verse - Sets/gets verse</font>
+01173 <font class="comment"> *</font>
+01174 <font class="comment"> * ENT: iverse - value which to set verse</font>
+01175 <font class="comment"> * [MAXPOS(int)] - only get</font>
+01176 <font class="comment"> *</font>
+01177 <font class="comment"> * RET: if unchanged -&gt; value of verse</font>
+01178 <font class="comment"> * if changed -&gt; previous value of verse</font>
+01179 <font class="comment"> */</font>
+01180
+<a name="l01181"></a><a class="code" href="class_verse_key.html#a29">01181</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a25">VerseKey::Verse</a>(<font class="keywordtype">int</font> iverse)
+01182 {
+01183 <font class="keywordtype">int</font> retval = verse;
+01184
+01185 verse = iverse;
+01186 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01187
+01188 <font class="keywordflow">return</font> retval;
+01189 }
+01190
+01191
+01192 <font class="comment">/******************************************************************************</font>
+01193 <font class="comment"> * VerseKey::AutoNormalize - Sets/gets flag that tells VerseKey to auto-</font>
+01194 <font class="comment"> * matically normalize itself when modified</font>
+01195 <font class="comment"> *</font>
+01196 <font class="comment"> * ENT: iautonorm - value which to set autonorm</font>
+01197 <font class="comment"> * [MAXPOS(char)] - only get</font>
+01198 <font class="comment"> *</font>
+01199 <font class="comment"> * RET: if unchanged -&gt; value of autonorm</font>
+01200 <font class="comment"> * if changed -&gt; previous value of autonorm</font>
+01201 <font class="comment"> */</font>
+01202
+<a name="l01203"></a><a class="code" href="class_verse_key.html#a31">01203</a> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a31">VerseKey::AutoNormalize</a>(<font class="keywordtype">char</font> iautonorm)
+01204 {
+01205 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o8">autonorm</a>;
+01206
+01207 <font class="keywordflow">if</font> (iautonorm != MAXPOS(<font class="keywordtype">char</font>)) {
+01208 <a class="code" href="class_verse_key.html#o8">autonorm</a> = iautonorm;
+01209 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01210 }
+01211 <font class="keywordflow">return</font> retval;
+01212 }
+01213
+01214
+01215 <font class="comment">/******************************************************************************</font>
+01216 <font class="comment"> * VerseKey::Headings - Sets/gets flag that tells VerseKey to include</font>
+01217 <font class="comment"> * chap/book/testmnt/module headings</font>
+01218 <font class="comment"> *</font>
+01219 <font class="comment"> * ENT: iheadings - value which to set headings</font>
+01220 <font class="comment"> * [MAXPOS(char)] - only get</font>
+01221 <font class="comment"> *</font>
+01222 <font class="comment"> * RET: if unchanged -&gt; value of headings</font>
+01223 <font class="comment"> * if changed -&gt; previous value of headings</font>
+01224 <font class="comment"> */</font>
+01225
+<a name="l01226"></a><a class="code" href="class_verse_key.html#a32">01226</a> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a32">VerseKey::Headings</a>(<font class="keywordtype">char</font> iheadings)
+01227 {
+01228 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o9">headings</a>;
+01229
+01230 <font class="keywordflow">if</font> (iheadings != MAXPOS(<font class="keywordtype">char</font>)) {
+01231 <a class="code" href="class_verse_key.html#o9">headings</a> = iheadings;
+01232 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
+01233 }
+01234 <font class="keywordflow">return</font> retval;
+01235 }
+01236
+01237
+01238 <font class="comment">/******************************************************************************</font>
+01239 <font class="comment"> * VerseKey::findindex - binary search to find the index closest, but less</font>
+01240 <font class="comment"> * than the given value.</font>
+01241 <font class="comment"> *</font>
+01242 <font class="comment"> * ENT: array - long * to array to search</font>
+01243 <font class="comment"> * size - number of elements in the array</font>
+01244 <font class="comment"> * value - value to find</font>
+01245 <font class="comment"> *</font>
+01246 <font class="comment"> * RET: the index into the array that is less than but closest to value</font>
+01247 <font class="comment"> */</font>
+01248
+<a name="l01249"></a><a class="code" href="class_verse_key.html#c6">01249</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#c6">VerseKey::findindex</a>(<font class="keywordtype">long</font> *array, <font class="keywordtype">int</font> size, <font class="keywordtype">long</font> value)
+01250 {
+01251 <font class="keywordtype">int</font> lbound, ubound, tval;
+01252
+01253 lbound = 0;
+01254 ubound = size - 1;
+01255 <font class="keywordflow">while</font> ((ubound - lbound) &gt; 1) {
+01256 tval = lbound + (ubound-lbound)/2;
+01257 <font class="keywordflow">if</font> (array[tval] &lt;= value)
+01258 lbound = tval;
+01259 <font class="keywordflow">else</font> ubound = tval;
+01260 }
+01261 <font class="keywordflow">return</font> (array[ubound] &lt;= value) ? ubound : lbound;
+01262 }
+01263
+01264
+01265 <font class="comment">/******************************************************************************</font>
+01266 <font class="comment"> * VerseKey::Index - Gets index based upon current verse</font>
+01267 <font class="comment"> *</font>
+01268 <font class="comment"> * RET: offset</font>
+01269 <font class="comment"> */</font>
+01270
+<a name="l01271"></a><a class="code" href="class_verse_key.html#a34">01271</a> <font class="keywordtype">long</font> <a class="code" href="class_verse_key.html#a34">VerseKey::Index</a>()<font class="keyword"> const</font>
+01272 <font class="keyword"></font>{
+01273 <font class="keywordtype">long</font> offset;
+01274
+01275 <font class="keywordflow">if</font> (!<a class="code" href="class_verse_key.html#o4">testament</a>) { <font class="comment">// if we want module heading</font>
+01276 offset = 0;
+01277 verse = 0;
+01278 }
+01279 <font class="keywordflow">else</font> {
+01280 <font class="keywordflow">if</font> (!book)
+01281 chapter = 0;
+01282 <font class="keywordflow">if</font> (!chapter)
+01283 verse = 0;
+01284
+01285 offset = offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0][book];
+01286 offset = offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][(int)offset + chapter];
+01287 <font class="keywordflow">if</font> (!(offset|verse)) <font class="comment">// if we have a testament but nothing else.</font>
+01288 offset = 1;
+01289 }
+01290 <font class="keywordflow">return</font> (offset + verse);
+01291 }
+01292
+01293
+01294 <font class="comment">/******************************************************************************</font>
+01295 <font class="comment"> * VerseKey::Index - Gets index based upon current verse</font>
+01296 <font class="comment"> *</font>
+01297 <font class="comment"> * RET: offset</font>
+01298 <font class="comment"> */</font>
+01299
+01300 <font class="keywordtype">long</font> VerseKey::NewIndex()<font class="keyword"> const</font>
+01301 <font class="keyword"></font>{
+01302 <font class="keyword">static</font> <font class="keywordtype">long</font> otMaxIndex = 32300 - 8245; <font class="comment">// total positions - new testament positions</font>
+01303 <font class="comment">// static long otMaxIndex = offsets[0][1][(int)offsets[0][0][BMAX[0]] + books[0][BMAX[0]].chapmax];</font>
+01304 <font class="keywordflow">return</font> ((<a class="code" href="class_verse_key.html#o4">testament</a>-1) * otMaxIndex) + <a class="code" href="class_verse_key.html#a34">Index</a>();
+01305 }
+01306
+01307
+01308 <font class="comment">/******************************************************************************</font>
+01309 <font class="comment"> * VerseKey::Index - Sets index based upon current verse</font>
+01310 <font class="comment"> *</font>
+01311 <font class="comment"> * ENT: iindex - value to set index to</font>
+01312 <font class="comment"> *</font>
+01313 <font class="comment"> * RET: offset</font>
+01314 <font class="comment"> */</font>
+01315
+<a name="l01316"></a><a class="code" href="class_verse_key.html#a35">01316</a> <font class="keywordtype">long</font> <a class="code" href="class_verse_key.html#a34">VerseKey::Index</a>(<font class="keywordtype">long</font> iindex)
+01317 {
+01318 <font class="keywordtype">long</font> offset;
+01319
+01320 <font class="comment">// This is the dirty stuff --------------------------------------------</font>
+01321
+01322 <font class="keywordflow">if</font> (!<a class="code" href="class_verse_key.html#o4">testament</a>)
+01323 <a class="code" href="class_verse_key.html#o4">testament</a> = 1;
+01324
+01325 <font class="keywordflow">if</font> (iindex &lt; 1) { <font class="comment">// if (-) or module heading</font>
+01326 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &lt; 2) {
+01327 <font class="keywordflow">if</font> (iindex &lt; 0) {
+01328 <a class="code" href="class_verse_key.html#o4">testament</a> = 0; <font class="comment">// previously we changed 0 -&gt; 1</font>
+01329 error = KEYERR_OUTOFBOUNDS;
+01330 }
+01331 <font class="keywordflow">else</font> <a class="code" href="class_verse_key.html#o4">testament</a> = 0; <font class="comment">// we want module heading</font>
+01332 }
+01333 <font class="keywordflow">else</font> {
+01334 <a class="code" href="class_verse_key.html#o4">testament</a>--;
+01335 iindex = (offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1]-1] + books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]-1].versemax[books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]-1].chapmax-1]) + iindex; <font class="comment">// What a doozy! ((offset of last chapter + number of verses in the last chapter) + iindex)</font>
+01336 }
+01337 }
+01338
+01339 <font class="comment">// --------------------------------------------------------------------</font>
+01340
+01341
+01342 <font class="keywordflow">if</font> (testament) {
+01343 <font class="keywordflow">if</font> ((!error) &amp;&amp; (iindex)) {
+01344 offset = <a class="code" href="class_verse_key.html#c6">findindex</a>(offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1], offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1], iindex);
+01345 verse = iindex - offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][offset];
+01346 book = <a class="code" href="class_verse_key.html#c6">findindex</a>(offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0], offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0], offset);
+01347 chapter = offset - offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0][VerseKey::book];
+01348 verse = (chapter) ? verse : 0; <font class="comment">// funny check. if we are index=1 (testmt header) all gets set to 0 exept verse. Don't know why. Fix if you figure out. Think its in the offsets table.</font>
+01349 <font class="keywordflow">if</font> (verse) { <font class="comment">// only check if -1 won't give negative</font>
+01350 <font class="keywordflow">if</font> (verse &gt; books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1]) {
+01351 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> &gt; 1) {
+01352 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
+01353 error = KEYERR_OUTOFBOUNDS;
+01354 }
+01355 <font class="keywordflow">else</font> {
+01356 <a class="code" href="class_verse_key.html#o4">testament</a>++;
+01357 <a class="code" href="class_verse_key.html#a34">Index</a>(verse - books[<a class="code" href="class_verse_key.html#o4">testament</a>-2][book-1].versemax[chapter-1]);
+01358 }
+01359 }
+01360 }
+01361 }
+01362 }
+01363 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a8">UpperBound</a>()) &gt; 0) {
+01364 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>();
+01365 error = KEYERR_OUTOFBOUNDS;
+01366 }
+01367 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a7">LowerBound</a>()) &lt; 0) {
+01368 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>();
+01369 error = KEYERR_OUTOFBOUNDS;
+01370 }
+01371 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#a34">Index</a>();
+01372 }
+01373
+01374
+01375 <font class="comment">/******************************************************************************</font>
+01376 <font class="comment"> * VerseKey::compare - Compares another SWKey object</font>
+01377 <font class="comment"> *</font>
+01378 <font class="comment"> * ENT: ikey - key to compare with this one</font>
+01379 <font class="comment"> *</font>
+01380 <font class="comment"> * RET: &gt;0 if this versekey is greater than compare versekey</font>
+01381 <font class="comment"> * &lt;0 &lt;</font>
+01382 <font class="comment"> * 0 =</font>
+01383 <font class="comment"> */</font>
+01384
+<a name="l01385"></a><a class="code" href="class_verse_key.html#a38">01385</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a38">VerseKey::compare</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp;ikey)
+01386 {
+01387 VerseKey ivkey = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)ikey;
+01388 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#a39">_compare</a>(ivkey);
+01389 }
+01390
+01391
+01392 <font class="comment">/******************************************************************************</font>
+01393 <font class="comment"> * VerseKey::_compare - Compares another VerseKey object</font>
+01394 <font class="comment"> *</font>
+01395 <font class="comment"> * ENT: ikey - key to compare with this one</font>
+01396 <font class="comment"> *</font>
+01397 <font class="comment"> * RET: &gt;0 if this versekey is greater than compare versekey</font>
+01398 <font class="comment"> * &lt;0 &lt;</font>
+01399 <font class="comment"> * 0 =</font>
+01400 <font class="comment"> */</font>
+01401
+<a name="l01402"></a><a class="code" href="class_verse_key.html#a39">01402</a> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a39">VerseKey::_compare</a>(<font class="keyword">const</font> VerseKey &amp;ivkey)
+01403 {
+01404 <font class="keywordtype">long</font> keyval1 = 0;
+01405 <font class="keywordtype">long</font> keyval2 = 0;
+01406
+01407 keyval1 += <a class="code" href="class_verse_key.html#a22">Testament</a>() * 1000000000;
+01408 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a22">Testament</a>() * 1000000000;
+01409 keyval1 += <a class="code" href="class_verse_key.html#a23">Book</a>() * 1000000;
+01410 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a23">Book</a>() * 1000000;
+01411 keyval1 += <a class="code" href="class_verse_key.html#a24">Chapter</a>() * 1000;
+01412 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>() * 1000;
+01413 keyval1 += <a class="code" href="class_verse_key.html#a25">Verse</a>();
+01414 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+01415 keyval1 -= keyval2;
+01416 keyval1 = (keyval1) ? ((keyval1 &gt; 0) ? 1 : -1) <font class="comment">/*keyval1/labs(keyval1)*/</font>:0; <font class="comment">// -1 | 0 | 1</font>
+01417 <font class="keywordflow">return</font> keyval1;
+01418 }
+01419
+01420
+01421 <font class="keyword">const</font> <font class="keywordtype">char</font> *VerseKey::getOSISRef()<font class="keyword"> const </font>{
+01422 <font class="keyword">static</font> <font class="keywordtype">char</font> buf[5][254];
+01423 <font class="keyword">static</font> <font class="keywordtype">char</font> loop = 0;
+01424
+01425 <font class="keywordflow">if</font> (loop &gt; 4)
+01426 loop = 0;
+01427
+01428 <font class="keyword">static</font> <font class="keywordtype">char</font> *osisotbooks[] = {
+01429 <font class="stringliteral">"Gen"</font>,<font class="stringliteral">"Exod"</font>,<font class="stringliteral">"Lev"</font>,<font class="stringliteral">"Num"</font>,<font class="stringliteral">"Deut"</font>,<font class="stringliteral">"Josh"</font>,<font class="stringliteral">"Judg"</font>,<font class="stringliteral">"Ruth"</font>,<font class="stringliteral">"_1Sam"</font>,<font class="stringliteral">"_2Sam"</font>,
+01430 <font class="stringliteral">"_1Kgs"</font>,<font class="stringliteral">"_2Kgs"</font>,<font class="stringliteral">"_1Chr"</font>,<font class="stringliteral">"_2Chr"</font>,<font class="stringliteral">"Ezra"</font>,<font class="stringliteral">"Neh"</font>,<font class="stringliteral">"Esth"</font>,<font class="stringliteral">"Job"</font>,<font class="stringliteral">"Ps"</font>,
+01431 <font class="stringliteral">"Prov"</font>, <font class="comment">// added this. Was not in OSIS spec</font>
+01432 <font class="stringliteral">"Eccl"</font>,
+01433 <font class="stringliteral">"Song"</font>,<font class="stringliteral">"Isa"</font>,<font class="stringliteral">"Jer"</font>,<font class="stringliteral">"Lam"</font>,<font class="stringliteral">"Ezek"</font>,<font class="stringliteral">"Dan"</font>,<font class="stringliteral">"Hos"</font>,<font class="stringliteral">"Joel"</font>,<font class="stringliteral">"Amos"</font>,<font class="stringliteral">"Obad"</font>,
+01434 <font class="stringliteral">"Jonah"</font>,<font class="stringliteral">"Mic"</font>,<font class="stringliteral">"Nah"</font>,<font class="stringliteral">"Hab"</font>,<font class="stringliteral">"Zeph"</font>,<font class="stringliteral">"Hag"</font>,<font class="stringliteral">"Zech"</font>,<font class="stringliteral">"Mal"</font>,<font class="stringliteral">"Bar"</font>,<font class="stringliteral">"PrAzar"</font>,
+01435 <font class="stringliteral">"Bel"</font>,<font class="stringliteral">"Sus"</font>,<font class="stringliteral">"_1Esd"</font>,<font class="stringliteral">"_2Esd"</font>,<font class="stringliteral">"AddEsth"</font>,<font class="stringliteral">"EpJer"</font>,<font class="stringliteral">"Jdt"</font>,<font class="stringliteral">"_1Macc"</font>,<font class="stringliteral">"_2Macc"</font>,<font class="stringliteral">"_3Macc"</font>,
+01436 <font class="stringliteral">"_4Macc"</font>,<font class="stringliteral">"PrMan"</font>,<font class="stringliteral">"Ps151"</font>,<font class="stringliteral">"Sir"</font>,<font class="stringliteral">"Tob"</font>,<font class="stringliteral">"Wis"</font>};
+01437 <font class="keyword">static</font> <font class="keywordtype">char</font> *osisntbooks[] = {
+01438 <font class="stringliteral">"Matt"</font>,<font class="stringliteral">"Mark"</font>,<font class="stringliteral">"Luke"</font>,<font class="stringliteral">"John"</font>,<font class="stringliteral">"Acts"</font>,<font class="stringliteral">"Rom"</font>,<font class="stringliteral">"_1Cor"</font>,<font class="stringliteral">"_2Cor"</font>,<font class="stringliteral">"Gal"</font>,<font class="stringliteral">"Eph"</font>,
+01439 <font class="stringliteral">"Phil"</font>,<font class="stringliteral">"Col"</font>,<font class="stringliteral">"_1Thess"</font>,<font class="stringliteral">"_2Thess"</font>,<font class="stringliteral">"_1Tim"</font>,<font class="stringliteral">"_2Tim"</font>,<font class="stringliteral">"Titus"</font>,<font class="stringliteral">"Phlm"</font>,<font class="stringliteral">"Heb"</font>,<font class="stringliteral">"Jas"</font>,
+01440 <font class="stringliteral">"_1Pet"</font>,<font class="stringliteral">"_2Pet"</font>,<font class="stringliteral">"_1John"</font>,<font class="stringliteral">"_2John"</font>,<font class="stringliteral">"_3John"</font>,<font class="stringliteral">"Jude"</font>,<font class="stringliteral">"Rev"</font>};
+01441 <font class="keyword">static</font> <font class="keywordtype">char</font> **osisbooks[] = { osisotbooks, osisntbooks };
+01442 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a25">Verse</a>())
+01443 sprintf(buf[loop], <font class="stringliteral">"%s.%d.%d"</font>, osisbooks[<a class="code" href="class_verse_key.html#a22">Testament</a>()-1][<a class="code" href="class_verse_key.html#a23">Book</a>()-1], (<font class="keywordtype">int</font>)<a class="code" href="class_verse_key.html#a24">Chapter</a>(), (<font class="keywordtype">int</font>)<a class="code" href="class_verse_key.html#a25">Verse</a>());
+01444 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a24">Chapter</a>())
+01445 sprintf(buf[loop], <font class="stringliteral">"%s.%d"</font>, osisbooks[<a class="code" href="class_verse_key.html#a22">Testament</a>()-1][<a class="code" href="class_verse_key.html#a23">Book</a>()-1], (<font class="keywordtype">int</font>)<a class="code" href="class_verse_key.html#a24">Chapter</a>());
+01446 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a23">Book</a>())
+01447 sprintf(buf[loop], <font class="stringliteral">"%s"</font>, osisbooks[<a class="code" href="class_verse_key.html#a22">Testament</a>()-1][<a class="code" href="class_verse_key.html#a23">Book</a>()-1]);
+01448 <font class="keywordflow">else</font> sprintf(buf[loop], <font class="stringliteral">""</font>);
+01449 <font class="keywordflow">return</font> buf[loop++];
+01450 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/versekey_8h-source.html b/doc/api-documentation/html/versekey_8h-source.html
new file mode 100644
index 0000000..2b41b3e
--- /dev/null
+++ b/doc/api-documentation/html/versekey_8h-source.html
@@ -0,0 +1,220 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>versekey.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>versekey.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * versekey.h - code for class 'versekey'- a standard Biblical verse key</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: versekey_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022
+00023 <font class="preprocessor">#ifndef VERSEKEY_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define VERSEKEY_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swmacs.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;listkey.h&gt;</font>
+00029 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00030
+00031 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00032
+00033 <font class="preprocessor">#define POS_MAXVERSE ((char)3)</font>
+00034 <font class="preprocessor"></font><font class="preprocessor">#define POS_MAXCHAPTER ((char)4)</font>
+00035 <font class="preprocessor"></font><font class="preprocessor">#define POS_MAXBOOK ((char)5)</font>
+00036 <font class="preprocessor"></font>
+00037 <font class="preprocessor">#define MAXVERSE SW_POSITION(POS_MAXVERSE)</font>
+00038 <font class="preprocessor"></font><font class="preprocessor">#define MAXCHAPTER SW_POSITION(POS_MAXCHAPTER)</font>
+00039 <font class="preprocessor"></font><font class="preprocessor">#define MAXBOOK SW_POSITION(POS_MAXBOOK)</font>
+00040 <font class="preprocessor"></font>
+00041 <font class="keyword">struct </font>sbook
+00042 {
+00045 <font class="keyword">const</font> <font class="keywordtype">char</font> *name;
+00046
+00049 <font class="keyword">const</font> <font class="keywordtype">char</font> *prefAbbrev;
+00050
+00053 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> chapmax;
+00056 <font class="keywordtype">int</font> *versemax;
+00057 };
+00058
+00059 <font class="keyword">struct </font>abbrev
+00060 {
+00061 <font class="keyword">const</font> <font class="keywordtype">char</font> *ab;
+00062 <font class="keywordtype">int</font> book;
+00063 };
+00064
+00065
+00066 <font class="keyword">class </font><a class="code" href="class_s_w_locale.html">SWLocale</a>;
+00067
+<a name="l00072"></a><a class="code" href="class_verse_key.html">00072</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_verse_key.html">VerseKey</a>:<font class="keyword">public</font> <a class="code" href="class_s_w_key.html">SWKey</a>
+00073 {
+00074 <font class="keyword">class </font>LocaleCache
+00075 {
+00076 <font class="keyword">public</font>:
+00077 <font class="keywordtype">char</font> *name;
+00078 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> abbrevsCnt;
+00079 <a class="code" href="class_s_w_locale.html">SWLocale</a> *locale;
+00080 LocaleCache()
+00081 {
+00082 name = 0;
+00083 abbrevsCnt = 0;
+00084 locale = 0;
+00085 }
+00086 <font class="keyword">virtual</font> ~LocaleCache()
+00087 {
+00088 <font class="keywordflow">if</font> (name)
+00089 <font class="keyword">delete</font>[]name;
+00090 }
+00091 };
+00092
+00093 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
+00094
+00095 <font class="keyword">static</font> <font class="keywordtype">long</font> *offsets[2][2];
+00096 <font class="keyword">static</font> <font class="keywordtype">int</font> offsize[2][2];
+00099 <font class="keyword">static</font> <font class="keywordtype">int</font> instance;
+00100 <font class="keyword">static</font> <font class="keyword">struct </font>sbook otbooks[];
+00101 <font class="keyword">static</font> <font class="keyword">struct </font>sbook ntbooks[];
+00102 <font class="keyword">static</font> <font class="keywordtype">long</font> otbks[];
+00103 <font class="keyword">static</font> <font class="keywordtype">long</font> otcps[];
+00104 <font class="keyword">static</font> <font class="keywordtype">long</font> ntbks[];
+00105 <font class="keyword">static</font> <font class="keywordtype">long</font> ntcps[];
+00106 <font class="keyword">static</font> <font class="keywordtype">int</font> vm[];
+00107 <font class="keyword">static</font> LocaleCache localeCache;
+00108 <a class="code" href="class_list_key.html">ListKey</a> internalListKey;
+00109
+00110 <font class="keyword">const</font> <font class="keyword">struct </font>abbrev *abbrevs;
+00111 <font class="keywordtype">char</font> *locale;
+00112 <font class="keywordtype">int</font> abbrevsCnt;
+<a name="l00115"></a><a class="code" href="class_verse_key.html#o4">00115</a> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> testament;
+00116 <font class="keyword">mutable</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> book;
+00117 <font class="keyword">mutable</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> chapter;
+00118 <font class="keyword">mutable</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> verse;
+<a name="l00121"></a><a class="code" href="class_verse_key.html#o8">00121</a> <font class="keywordtype">char</font> autonorm;
+<a name="l00124"></a><a class="code" href="class_verse_key.html#o9">00124</a> <font class="keywordtype">char</font> headings;
+00125
+00126 <font class="keywordtype">int</font> getBookAbbrev(<font class="keyword">const</font> <font class="keywordtype">char</font> *abbr);
+00127 <font class="keywordtype">void</font> initBounds() <font class="keyword">const</font>;
+00130 <font class="keywordtype">void</font> initstatics();
+00133 <font class="keywordtype">void</font> init();
+00138 <font class="keywordtype">void</font> freshtext() <font class="keyword">const</font>;
+00142 <font class="keyword">virtual</font> <font class="keywordtype">char</font> parse();
+00151 <font class="keywordtype">int</font> findindex(<font class="keywordtype">long</font> *array, <font class="keywordtype">int</font> size, <font class="keywordtype">long</font> value);
+00152 <font class="keyword">mutable</font> <a class="code" href="class_verse_key.html">VerseKey</a> *lowerBound, *upperBound;
+00153
+00154 <font class="keyword">public</font>:
+00155 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> builtin_BMAX[2];
+00156 <font class="keyword">static</font> <font class="keyword">struct </font>sbook *builtin_books[2];
+00157 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keyword">struct </font>abbrev builtin_abbrevs[];
+00158 <font class="keyword">const</font> <font class="keywordtype">char</font> *BMAX;
+00159 <font class="keyword">struct </font>sbook **books;
+00160
+00167 <a class="code" href="class_verse_key.html">VerseKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey = 0);
+00168
+00175 <a class="code" href="class_verse_key.html">VerseKey</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * ikey);
+00176
+00183 <a class="code" href="class_verse_key.html">VerseKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *min, <font class="keyword">const</font> <font class="keywordtype">char</font> *max);
+00184
+00190 <a class="code" href="class_verse_key.html">VerseKey</a>(<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> &amp;k);
+00191
+00195 <font class="keyword">virtual</font> ~ VerseKey();
+00196
+00203 <a class="code" href="class_verse_key.html">VerseKey</a> &amp; LowerBound(<font class="keyword">const</font> <font class="keywordtype">char</font> *lb);
+00204
+00210 <a class="code" href="class_verse_key.html">VerseKey</a> &amp; UpperBound(<font class="keyword">const</font> <font class="keywordtype">char</font> *ub);
+00211
+00215 <a class="code" href="class_verse_key.html">VerseKey</a> &amp; LowerBound() <font class="keyword">const</font>;
+00216
+00220 <a class="code" href="class_verse_key.html">VerseKey</a> &amp; UpperBound() <font class="keyword">const</font>;
+00221
+00224 <font class="keywordtype">void</font> ClearBounds();
+00225
+00229 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_key.html#a3">clone</a>() <font class="keyword">const</font>;
+00230
+00234 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_key.html#a9">getText</a>() <font class="keyword">const</font>;
+00235 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getShortText() <font class="keyword">const</font>;
+<a name="l00236"></a><a class="code" href="class_verse_key.html#a13">00236</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a7">setText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey) { <a class="code" href="class_s_w_key.html#a7">SWKey::setText</a>(ikey); parse (); }
+00237 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; ikey);
+00238
+00241 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> &amp; ikey);
+00242
+00248 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setPosition(SW_POSITION);
+00249
+00255 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a14">decrement</a>(<font class="keywordtype">int</font> step);
+00256
+00262 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a15">increment</a>(<font class="keywordtype">int</font> step);
+00263 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Traversable() { <font class="keywordflow">return</font> 1; }
+00264
+00265 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getBookName() <font class="keyword">const</font>;
+00266 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getBookAbbrev() <font class="keyword">const</font>;
+00271 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Testament() <font class="keyword">const</font>;
+00272
+00277 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Book() <font class="keyword">const</font>;
+00278
+00283 <font class="keyword">virtual</font> <font class="keywordtype">int</font> Chapter() <font class="keyword">const</font>;
+00284
+00289 <font class="keyword">virtual</font> <font class="keywordtype">int</font> Verse() <font class="keyword">const</font>;
+00290
+00298 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Testament(<font class="keywordtype">char</font> itestament);
+00299
+00307 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Book(<font class="keywordtype">char</font> ibook);
+00308
+00316 <font class="keyword">virtual</font> <font class="keywordtype">int</font> Chapter(<font class="keywordtype">int</font> ichapter);
+00317
+00325 <font class="keyword">virtual</font> <font class="keywordtype">int</font> Verse(<font class="keywordtype">int</font> iverse);
+00326
+00333 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Normalize(<font class="keywordtype">char</font> autocheck = 0);
+00334
+00343 <font class="keyword">virtual</font> <font class="keywordtype">char</font> AutoNormalize(<font class="keywordtype">char</font> iautonorm = MAXPOS (<font class="keywordtype">char</font>));
+00344
+00353 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Headings(<font class="keywordtype">char</font> iheadings = MAXPOS (<font class="keywordtype">char</font>));
+00354
+00355 <font class="keyword">virtual</font> <font class="keywordtype">long</font> NewIndex() <font class="keyword">const</font>;
+00356
+00361 <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a17">Index</a>() <font class="keyword">const</font>;
+00362
+00368 <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a17">Index</a>(<font class="keywordtype">long</font> iindex);
+00369
+00370 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getOSISRef() <font class="keyword">const</font>;
+00371
+00372 <font class="keyword">virtual</font> <a class="code" href="class_list_key.html">ListKey</a> ParseVerseList(<font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *defaultKey = <font class="stringliteral">"Genesis 1:1"</font>, <font class="keywordtype">bool</font> expandRange = <font class="keyword">false</font>);
+00380 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_s_w_key.html#a11">compare</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; ikey);
+00381
+00389 <font class="keyword">virtual</font> <font class="keywordtype">int</font> _compare(<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> &amp; ikey);
+00390
+00391 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setBookAbbrevs(<font class="keyword">const</font> <font class="keyword">struct</font> abbrev *bookAbbrevs, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> size = 0 <font class="comment">/* default determine size */</font> );
+00392 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setBooks(<font class="keyword">const</font> <font class="keywordtype">char</font> *iBMAX, <font class="keyword">struct</font> sbook **ibooks);
+00393 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setLocale(<font class="keyword">const</font> <font class="keywordtype">char</font> *name);
+00394 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getLocale()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> locale; }
+00395
+00396 SWKEY_OPERATORS
+00397
+00398 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> &amp; operator = (<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> &amp; ikey) { <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(ikey); <font class="keywordflow">return</font> *<font class="keyword">this</font>; }
+00399 };
+00400
+00401
+00402 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/vntidx_8cpp-source.html b/doc/api-documentation/html/vntidx_8cpp-source.html
new file mode 100644
index 0000000..8813465
--- /dev/null
+++ b/doc/api-documentation/html/vntidx_8cpp-source.html
@@ -0,0 +1,199 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>vntidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>vntidx.cpp</h1><div class="fragment"><pre>00001 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00002 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00003 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00004
+00005
+00006 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size);
+00007
+00008
+00009 main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00010 {
+00011 <font class="keywordtype">int</font> fp, vfp, cfp, bfp;
+00012 <font class="keywordtype">long</font> pos;
+00013 <font class="keywordtype">short</font> size, tmp;
+00014 <font class="keywordtype">int</font> num1, num2, offset, curbook = 0, curchap = 0, curverse = 0;
+00015 <font class="keywordtype">char</font> buf[127];
+00016 <a class="code" href="class_verse_key.html">VerseKey</a> mykey;
+00017
+00018 <font class="keywordflow">if</font> ((argc &lt; 2) || (argc &gt; 3)) {
+00019 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt]\n"</font>, argv[0]);
+00020 exit(1);
+00021 }
+00022
+00023 <font class="keywordflow">if</font> ((fp = open(argv[1], O_RDONLY)) == -1) {
+00024 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, argv[1]);
+00025 exit(1);
+00026 }
+00027
+00028 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, argv[1]);
+00029 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00030 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00031 exit(1);
+00032 }
+00033
+00034 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, argv[1]);
+00035 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00036 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00037 exit(1);
+00038 }
+00039
+00040 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, argv[1]);
+00041 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY)) == -1) {
+00042 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00043 exit(1);
+00044 }
+00045
+00046 pos = 0;
+00047 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00048 pos = 4;
+00049 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00050
+00051
+00052 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00053 pos = 0;
+00054 size = 0;
+00055 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00056 write(vfp, &amp;size, 2);
+00057 write(vfp, &amp;pos, 4); <font class="comment">/* Testament intro */</font>
+00058 write(vfp, &amp;size, 2);
+00059
+00060 mykey = (argc == 3) ? <font class="stringliteral">"Matthew 1:1"</font> : <font class="stringliteral">"Genesis 1:1"</font>;
+00061
+00062 <font class="keywordflow">while</font> (!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;size)) {
+00063 num1 = mykey.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00064 num2 = mykey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00065 <font class="keywordflow">if</font> (num2 == 1) { <font class="comment">/* if we're at a new chapter */</font>
+00066 <font class="keywordflow">if</font> (num1 == 1) { <font class="comment">/* if we're at a new book */</font>
+00067 pos = lseek(cfp, 0, SEEK_CUR);
+00068 write(bfp, &amp;pos, 4);
+00069 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00070 write(cfp, &amp;pos, 4);
+00071 pos = 0;
+00072 tmp = 0;
+00073 write(vfp, &amp;pos, 4); <font class="comment">/* Book intro (vss) */</font>
+00074 write(vfp, &amp;tmp, 2);
+00075 curbook++;
+00076 curchap = 0;
+00077 }
+00078 pos = lseek(vfp, 0, SEEK_CUR);
+00079 write(cfp, &amp;pos, 4);
+00080 curverse = 1;
+00081 pos = 0;
+00082 tmp = 0;
+00083 write(vfp, &amp;pos, 4); <font class="comment">/* Chapter intro */</font>
+00084 write(vfp, &amp;tmp, 2);
+00085 curchap++;
+00086 }
+00087 <font class="keywordflow">else</font> curverse++;
+00088
+00089 printf(<font class="stringliteral">"%2d:%3d:%3d found at offset: %7d\n"</font>, curbook, num1, num2, offset);
+00090
+00091 <font class="keywordflow">if</font> (num1 != curchap) {
+00092 fprintf(stderr, <font class="stringliteral">"Error: Found chaptures out of sequence\n"</font>);
+00093 <font class="keywordflow">break</font>;
+00094 }
+00095 <font class="keywordflow">if</font> (num2 != curverse) {
+00096 fprintf(stderr, <font class="stringliteral">"Error: Found verses out of sequence\n"</font>);
+00097 <font class="keywordflow">break</font>;
+00098 }
+00099 write(vfp, &amp;offset, 4);
+00100 write(vfp, &amp;size, 2);
+00101 mykey++;
+00102 }
+00103
+00104 close(vfp);
+00105 close(cfp);
+00106 close(bfp);
+00107 close(fp);
+00108 }
+00109
+00110
+00111 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">int</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">short</font> *size)
+00112 {
+00113 <font class="keywordtype">char</font> buf[17];
+00114 <font class="keywordtype">char</font> buf2[7];
+00115 <font class="keywordtype">char</font> buf3[7];
+00116 <font class="keywordtype">char</font> loop;
+00117 <font class="keywordtype">char</font> offadj, inquotes, sizeadj;
+00118 <font class="keywordtype">int</font> offset2, ch2, vs2;
+00119
+00120 strcpy (buf3, <font class="stringliteral">"\\par "</font>);
+00121 buf3[5] = 10;
+00122 memset(buf, <font class="charliteral">' '</font>, 17);
+00123
+00124 <font class="keywordflow">while</font> (1) {
+00125 offadj = -100;
+00126 inquotes = 0;
+00127 sizeadj = 0;
+00128 <font class="keywordflow">if</font> (!memcmp(buf, <font class="stringliteral">"\\par FIN DEL NUEVO TESTAMENTO"</font>, 16)) {
+00129 offadj = -11;
+00130 <font class="comment">// inquotes = 1;</font>
+00131 sizeadj = -7;
+00132 }
+00133
+00134 <font class="keywordflow">if</font> ((!memcmp(buf, buf3, 6)) &amp;&amp; (!size)) {
+00135 offadj = -11;
+00136 <font class="comment">// inquotes = 1;</font>
+00137 sizeadj = -7;
+00138 }
+00139 <font class="keywordflow">if</font> (!memcmp(buf, <font class="stringliteral">"\\par "</font>, 6)) {
+00140 <font class="keywordflow">if</font> (isdigit(buf[6])) {
+00141 <font class="keywordflow">for</font> (loop = 7; loop &lt; 10; loop++) {
+00142 <font class="keywordflow">if</font> (!isdigit(buf[loop]))
+00143 <font class="keywordflow">break</font>;
+00144 }
+00145 offadj = -(11 - (loop - 6));
+00146 <font class="comment">// inquotes = 1;</font>
+00147 sizeadj = -7;
+00148 }
+00149 }
+00150 <font class="comment">/*</font>
+00151 <font class="comment"> if (!memcmp(buf, "\\fi200\\widctlpar", 16)) {</font>
+00152 <font class="comment"> offadj = -1;</font>
+00153 <font class="comment">// inquotes = 1;</font>
+00154 <font class="comment"> sizeadj = -18;</font>
+00155 <font class="comment"> }</font>
+00156 <font class="comment">*/</font>
+00157 <font class="keywordflow">if</font> (offadj &gt; -100) {
+00158 *offset = lseek(fp, 0, SEEK_CUR) + offadj;
+00159 <font class="keywordflow">if</font> (size) {
+00160 (*offset)++;
+00161 <font class="keywordflow">while</font> (inquotes) {
+00162 <font class="keywordflow">while</font> (read(fp, buf2, 1) == 1) {
+00163 <font class="keywordflow">if</font> (*buf2 == <font class="charliteral">'}'</font>)
+00164 <font class="keywordflow">break</font>;
+00165 (*offset)++;
+00166 }
+00167 inquotes--;
+00168 }
+00169 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, 0)) {
+00170 *size = (short) (lseek(fp, 0, SEEK_END) - (*offset));
+00171 }
+00172 <font class="keywordflow">else</font> {
+00173 *size = (offset2 - (*offset));
+00174 }
+00175 lseek(fp, *offset-sizeadj, SEEK_SET);
+00176 }
+00177 <font class="keywordflow">else</font> (*offset) += sizeadj;
+00178 <font class="keywordflow">return</font> 0;
+00179 }
+00180 memmove(buf, &amp;buf[1], 16);
+00181 <font class="keywordflow">if</font> (read(fp, &amp;buf[16], 1) != 1)
+00182 <font class="keywordflow">return</font> 1;
+00183 }
+00184 }
+00185
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zcom_8cpp-source.html b/doc/api-documentation/html/zcom_8cpp-source.html
new file mode 100644
index 0000000..bc0713d
--- /dev/null
+++ b/doc/api-documentation/html/zcom_8cpp-source.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zcom.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zcom.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawcom.cpp - code for class 'zCom'- a module that reads raw commentary</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;zverse.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;zcom.h&gt;</font>
+00021
+00022
+00023 <font class="comment">/******************************************************************************</font>
+00024 <font class="comment"> * zCom Constructor - Initializes data for instance of zCom</font>
+00025 <font class="comment"> *</font>
+00026 <font class="comment"> * ENT: ipath - path to data files</font>
+00027 <font class="comment"> * iname - Internal name for module</font>
+00028 <font class="comment"> * idesc - Name to display to user for module</font>
+00029 <font class="comment"> * iblockType - verse, chapter, book, etc. of index chunks</font>
+00030 <font class="comment"> * icomp - Compressor object</font>
+00031 <font class="comment"> * idisp - Display object to use for displaying</font>
+00032 <font class="comment"> */</font>
+00033
+00034 zCom::zCom(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <font class="keywordtype">int</font> iblockType, SWCompress *icomp, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : zVerse(ipath, -1, iblockType, icomp), <a class="code" href="class_s_w_com.html">SWCom</a>(iname, idesc, idisp, enc, dir, mark, ilang)<font class="comment">/*, SWCompress()*/</font>
+00035 {
+00036 blockType = iblockType;
+00037 lastWriteKey = 0;
+00038 }
+00039
+00040 <font class="comment">/******************************************************************************</font>
+00041 <font class="comment"> * zCom Destructor - Cleans up instance of zCom</font>
+00042 <font class="comment"> */</font>
+00043
+00044 zCom::~zCom() {
+00045 flushCache();
+00046
+00047 <font class="keywordflow">if</font> (lastWriteKey)
+00048 <font class="keyword">delete</font> lastWriteKey;
+00049 }
+00050
+00051 <font class="comment">/******************************************************************************</font>
+00052 <font class="comment"> * zCom::operator char * - Returns the correct verse when char * cast</font>
+00053 <font class="comment"> * is requested</font>
+00054 <font class="comment"> *</font>
+00055 <font class="comment"> * RET: string buffer with verse</font>
+00056 <font class="comment"> */</font>
+00057 <font class="keywordtype">char</font> *zCom::getRawEntry() {
+00058 <font class="keywordtype">long</font> start = 0;
+00059 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = 0;
+00060 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00061
+00062 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00063 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00064 <font class="preprocessor">#endif</font>
+00065 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00066 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00067 <font class="preprocessor"></font> }
+00068 <font class="keywordflow">catch</font> ( ... ) {}
+00069 <font class="preprocessor">#endif</font>
+00070 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00071 <font class="keywordflow">if</font> (!key)
+00072 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00073
+00074 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00075 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00076
+00077 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> newsize = (size + 2) * FILTERPAD;
+00078 <font class="keywordflow">if</font> (newsize &gt; entrybufallocsize) {
+00079 <font class="keywordflow">if</font> (entrybuf)
+00080 <font class="keyword">delete</font> [] entrybuf;
+00081 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ newsize ];
+00082 entrybufallocsize = newsize;
+00083 }
+00084 *entrybuf = 0;
+00085
+00086 swgettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, (size + 2), entrybuf);
+00087
+00088 rawFilter(entrybuf, size, key);
+00089
+00090 <font class="keywordflow">if</font> (!isUnicode())
+00091 preptext(entrybuf);
+00092
+00093 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00094 <font class="keyword">delete</font> key;
+00095
+00096 <font class="keywordflow">return</font> entrybuf;
+00097 }
+00098
+00099
+00100 <font class="keywordtype">bool</font> zCom::sameBlock(<a class="code" href="class_verse_key.html">VerseKey</a> *k1, <a class="code" href="class_verse_key.html">VerseKey</a> *k2) {
+00101 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>())
+00102 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00103
+00104 <font class="keywordflow">switch</font> (blockType) {
+00105 <font class="keywordflow">case</font> VERSEBLOCKS:
+00106 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>())
+00107 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00108 <font class="keywordflow">case</font> CHAPTERBLOCKS:
+00109 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>())
+00110 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00111 <font class="keywordflow">case</font> BOOKBLOCKS:
+00112 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>())
+00113 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00114 }
+00115 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00116 }
+00117
+00118 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zCom::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00119 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00120 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00121 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00122 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00123 <font class="preprocessor">#endif</font>
+00124 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00125 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00126 <font class="preprocessor"></font> }
+00127 <font class="keywordflow">catch</font> ( ... ) {}
+00128 <font class="preprocessor">#endif</font>
+00129 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00130 <font class="keywordflow">if</font> (!key)
+00131 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00132
+00133
+00134 <font class="comment">// see if we've jumped across blocks since last write</font>
+00135 <font class="keywordflow">if</font> (lastWriteKey) {
+00136 <font class="keywordflow">if</font> (!sameBlock(lastWriteKey, key)) {
+00137 flushCache();
+00138 }
+00139 <font class="keyword">delete</font> lastWriteKey;
+00140 }
+00141
+00142 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), inbuf, len);
+00143
+00144 lastWriteKey = (<a class="code" href="class_verse_key.html">VerseKey</a> *)key-&gt;<a class="code" href="class_verse_key.html#a10">clone</a>(); <font class="comment">// must delete</font>
+00145
+00146 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00147 <font class="keyword">delete</font> key;
+00148
+00149 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00150 }
+00151
+00152 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zCom::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00153 <font class="keywordflow">return</font> setentry(inbuf, 0);
+00154 }
+00155
+00156
+00157 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zCom::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00158 <a class="code" href="class_verse_key.html">VerseKey</a> *destkey = 0;
+00159 <font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *srckey = 0;
+00160 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00161 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00162 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00163 <font class="preprocessor">#endif</font>
+00164 <font class="preprocessor"></font> destkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00165 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00166 <font class="preprocessor"></font> }
+00167 <font class="keywordflow">catch</font> ( ... ) {}
+00168 <font class="preprocessor">#endif</font>
+00169 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00170 <font class="keywordflow">if</font> (!destkey)
+00171 destkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00172
+00173 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00174 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00175 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00176 <font class="preprocessor">#endif</font>
+00177 <font class="preprocessor"></font> srckey = (<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *) SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, inkey);
+00178 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00179 <font class="preprocessor"></font> }
+00180 <font class="keywordflow">catch</font> ( ... ) {
+00181 }
+00182 <font class="preprocessor">#endif</font>
+00183 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00184 <font class="keywordflow">if</font> (!srckey)
+00185 srckey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(inkey);
+00186
+00187 linkentry(destkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), destkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), srckey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>());
+00188
+00189 <font class="keywordflow">if</font> (this-&gt;key != destkey) <font class="comment">// free our key if we created a VerseKey</font>
+00190 <font class="keyword">delete</font> destkey;
+00191
+00192 <font class="keywordflow">if</font> (inkey != srckey) <font class="comment">// free our key if we created a VerseKey</font>
+00193 <font class="keyword">delete</font> srckey;
+00194
+00195 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00196 }
+00197
+00198 <font class="comment">/******************************************************************************</font>
+00199 <font class="comment"> * zCom::deleteEntry - deletes this entry</font>
+00200 <font class="comment"> *</font>
+00201 <font class="comment"> * RET: *this</font>
+00202 <font class="comment"> */</font>
+00203
+00204 <font class="keywordtype">void</font> zCom::deleteEntry() {
+00205
+00206 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00207
+00208 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00209 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00210 <font class="preprocessor">#endif</font>
+00211 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00212 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00213 <font class="preprocessor"></font> }
+00214 <font class="keywordflow">catch</font> ( ... ) {}
+00215 <font class="preprocessor">#endif</font>
+00216 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00217 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00218
+00219 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), <font class="stringliteral">""</font>);
+00220
+00221 <font class="keywordflow">if</font> (key != this-&gt;key)
+00222 <font class="keyword">delete</font> key;
+00223 }
+00224
+00225
+00226 <font class="comment">/******************************************************************************</font>
+00227 <font class="comment"> * zCom::operator += - Increments module key a number of entries</font>
+00228 <font class="comment"> *</font>
+00229 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00230 <font class="comment"> *</font>
+00231 <font class="comment"> * RET: *this</font>
+00232 <font class="comment"> */</font>
+00233
+00234 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zCom::operator +=(<font class="keywordtype">int</font> increment) {
+00235 <font class="keywordtype">long</font> start;
+00236 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00237 <a class="code" href="class_verse_key.html">VerseKey</a> *tmpkey = 0;
+00238
+00239 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00240 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00241 <font class="preprocessor">#endif</font>
+00242 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00243 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00244 <font class="preprocessor"></font> }
+00245 <font class="keywordflow">catch</font> ( ... ) {}
+00246 <font class="preprocessor">#endif</font>
+00247 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00248 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(key);
+00249
+00250 findoffset(tmpkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), tmpkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00251
+00252 <a class="code" href="class_s_w_key.html">SWKey</a> lastgood = *tmpkey;
+00253 <font class="keywordflow">while</font> (increment) {
+00254 <font class="keywordtype">long</font> laststart = start;
+00255 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> lastsize = size;
+00256 <a class="code" href="class_s_w_key.html">SWKey</a> lasttry = *tmpkey;
+00257 (<a class="code" href="class_verse_key.html#a18">increment</a> &gt; 0) ? (*key)++ : (*key)--;
+00258 <font class="keywordflow">if</font> (tmpkey != key)
+00259 <font class="keyword">delete</font> tmpkey;
+00260 tmpkey = 0;
+00261 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00262 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00263 <font class="preprocessor">#endif</font>
+00264 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00265 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00266 <font class="preprocessor"></font> }
+00267 <font class="keywordflow">catch</font> ( ... ) {}
+00268 <font class="preprocessor">#endif</font>
+00269 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00270 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(key);
+00271
+00272 <font class="keywordflow">if</font> ((error = key-&gt;Error())) {
+00273 *key = lastgood;
+00274 <font class="keywordflow">break</font>;
+00275 }
+00276 <font class="keywordtype">long</font> index = tmpkey-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00277 findoffset(tmpkey-&gt;Testament(), index, &amp;start, &amp;size);
+00278 <font class="keywordflow">if</font> ((((laststart != start) || (lastsize != size))||(!skipConsecutiveLinks)) &amp;&amp; (start &gt;= 0) &amp;&amp; (size)) {
+00279 <a class="code" href="class_verse_key.html#a18">increment</a> += (<a class="code" href="class_verse_key.html#a18">increment</a> &lt; 0) ? 1 : -1;
+00280 lastgood = *tmpkey;
+00281 }
+00282 }
+00283 error = (error) ? KEYERR_OUTOFBOUNDS : 0;
+00284
+00285 <font class="keywordflow">if</font> (tmpkey != key)
+00286 <font class="keyword">delete</font> tmpkey;
+00287
+00288 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00289 }
+00290
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zcom_8h-source.html b/doc/api-documentation/html/zcom_8h-source.html
new file mode 100644
index 0000000..3f79593
--- /dev/null
+++ b/doc/api-documentation/html/zcom_8h-source.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zcom.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zcom.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * zcom.h - code for class 'zCom'- a module that reads compressed text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.vss</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: zcom_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef ZCOM_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define ZCOM_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swcom.h&gt;</font>
+00028 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWDLLEXPORT zCom:<font class="keyword">public</font> zVerse, <font class="keyword">public</font> <a class="code" href="class_s_w_com.html">SWCom</a> {
+00033 <a class="code" href="class_verse_key.html">VerseKey</a> *lastWriteKey;
+00034 <font class="keywordtype">bool</font> sameBlock (<a class="code" href="class_verse_key.html">VerseKey</a> * lastWriteKey, <a class="code" href="class_verse_key.html">VerseKey</a> * key);
+00035 <font class="keywordtype">int</font> blockType;
+00036 <font class="keyword">public</font>:
+00037
+00038
+00039 zCom (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc =
+00040 0, <font class="keywordtype">int</font> blockType = CHAPTERBLOCKS, SWCompress * icomp =
+00041 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00042 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00043 <font class="keyword">virtual</font> ~ zCom ();
+00044 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a> ();
+00045 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a37">operator += </a>(<font class="keywordtype">int</font> increment);
+00046 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a36">operator -= </a>(<font class="keywordtype">int</font> decrement)
+00047 {
+00048 <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_s_w_module.html#a37">operator += </a>(-decrement);
+00049 }
+00050
+00051 <font class="comment">// write interface ----------------------------</font>
+00052 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfp[0]-&gt;getFd() &gt; 0) &amp;&amp; ((idxfp[0]-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00053 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> blockBound)
+00054 {
+00055 <font class="keywordflow">return</font> zVerse::createModule (path, blockBound);
+00056 }
+00057 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00058 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00059 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00060 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00061 <font class="comment">// end write interface ------------------------</font>
+00062
+00063 <font class="comment">// swcacher interface ----------------------</font>
+00064 <font class="keyword">virtual</font> <font class="keywordtype">void</font> flush() { flushCache(); }
+00065 <font class="comment">// end swcacher interface ----------------------</font>
+00066 };
+00067
+00068
+00069 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zconf_8h-source.html b/doc/api-documentation/html/zconf_8h-source.html
new file mode 100644
index 0000000..be43e7a
--- /dev/null
+++ b/doc/api-documentation/html/zconf_8h-source.html
@@ -0,0 +1,293 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zconf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zconf.h</h1><div class="fragment"><pre>00001 <font class="comment">/* zconf.h -- configuration of the zlib compression library</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Jean-loup Gailly.</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h </font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* @(#) $Id: zconf_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $ */</font>
+00007
+00008 <font class="preprocessor">#ifndef _ZCONF_H</font>
+00009 <font class="preprocessor"></font><font class="preprocessor">#define _ZCONF_H</font>
+00010 <font class="preprocessor"></font>
+00011 <font class="comment">/*</font>
+00012 <font class="comment"> * If you *really* need a unique prefix for all types and library functions,</font>
+00013 <font class="comment"> * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.</font>
+00014 <font class="comment"> */</font>
+00015 <font class="preprocessor">#ifdef Z_PREFIX</font>
+00016 <font class="preprocessor"></font><font class="preprocessor"># define deflateInit_ z_deflateInit_</font>
+00017 <font class="preprocessor"></font><font class="preprocessor"># define deflate z_deflate</font>
+00018 <font class="preprocessor"></font><font class="preprocessor"># define deflateEnd z_deflateEnd</font>
+00019 <font class="preprocessor"></font><font class="preprocessor"># define inflateInit_ z_inflateInit_</font>
+00020 <font class="preprocessor"></font><font class="preprocessor"># define inflate z_inflate</font>
+00021 <font class="preprocessor"></font><font class="preprocessor"># define inflateEnd z_inflateEnd</font>
+00022 <font class="preprocessor"></font><font class="preprocessor"># define deflateInit2_ z_deflateInit2_</font>
+00023 <font class="preprocessor"></font><font class="preprocessor"># define deflateSetDictionary z_deflateSetDictionary</font>
+00024 <font class="preprocessor"></font><font class="preprocessor"># define deflateCopy z_deflateCopy</font>
+00025 <font class="preprocessor"></font><font class="preprocessor"># define deflateReset z_deflateReset</font>
+00026 <font class="preprocessor"></font><font class="preprocessor"># define deflateParams z_deflateParams</font>
+00027 <font class="preprocessor"></font><font class="preprocessor"># define inflateInit2_ z_inflateInit2_</font>
+00028 <font class="preprocessor"></font><font class="preprocessor"># define inflateSetDictionary z_inflateSetDictionary</font>
+00029 <font class="preprocessor"></font><font class="preprocessor"># define inflateSync z_inflateSync</font>
+00030 <font class="preprocessor"></font><font class="preprocessor"># define inflateSyncPoint z_inflateSyncPoint</font>
+00031 <font class="preprocessor"></font><font class="preprocessor"># define inflateReset z_inflateReset</font>
+00032 <font class="preprocessor"></font><font class="preprocessor"># define compress z_compress</font>
+00033 <font class="preprocessor"></font><font class="preprocessor"># define compress2 z_compress2</font>
+00034 <font class="preprocessor"></font><font class="preprocessor"># define uncompress z_uncompress</font>
+00035 <font class="preprocessor"></font><font class="preprocessor"># define adler32 z_adler32</font>
+00036 <font class="preprocessor"></font><font class="preprocessor"># define crc32 z_crc32</font>
+00037 <font class="preprocessor"></font><font class="preprocessor"># define get_crc_table z_get_crc_table</font>
+00038 <font class="preprocessor"></font>
+00039 <font class="preprocessor"># define Byte z_Byte</font>
+00040 <font class="preprocessor"></font><font class="preprocessor"># define uInt z_uInt</font>
+00041 <font class="preprocessor"></font><font class="preprocessor"># define uLong z_uLong</font>
+00042 <font class="preprocessor"></font><font class="preprocessor"># define Bytef z_Bytef</font>
+00043 <font class="preprocessor"></font><font class="preprocessor"># define charf z_charf</font>
+00044 <font class="preprocessor"></font><font class="preprocessor"># define intf z_intf</font>
+00045 <font class="preprocessor"></font><font class="preprocessor"># define uIntf z_uIntf</font>
+00046 <font class="preprocessor"></font><font class="preprocessor"># define uLongf z_uLongf</font>
+00047 <font class="preprocessor"></font><font class="preprocessor"># define voidpf z_voidpf</font>
+00048 <font class="preprocessor"></font><font class="preprocessor"># define voidp z_voidp</font>
+00049 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00050 <font class="preprocessor"></font>
+00051 <font class="preprocessor">#if (defined(_WIN32) || defined(__WIN32__)) &amp;&amp; !defined(WIN32)</font>
+00052 <font class="preprocessor"></font><font class="preprocessor"># define WIN32</font>
+00053 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00054 <font class="preprocessor"></font><font class="preprocessor">#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)</font>
+00055 <font class="preprocessor"></font><font class="preprocessor"># ifndef __32BIT__</font>
+00056 <font class="preprocessor"></font><font class="preprocessor"># define __32BIT__</font>
+00057 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00058 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00059 <font class="preprocessor"></font><font class="preprocessor">#if defined(__MSDOS__) &amp;&amp; !defined(MSDOS)</font>
+00060 <font class="preprocessor"></font><font class="preprocessor"># define MSDOS</font>
+00061 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00062 <font class="preprocessor"></font>
+00063 <font class="comment">/*</font>
+00064 <font class="comment"> * Compile with -DMAXSEG_64K if the alloc function cannot allocate more</font>
+00065 <font class="comment"> * than 64k bytes at a time (needed on systems with 16-bit int).</font>
+00066 <font class="comment"> */</font>
+00067 <font class="preprocessor">#if defined(MSDOS) &amp;&amp; !defined(__32BIT__)</font>
+00068 <font class="preprocessor"></font><font class="preprocessor"># define MAXSEG_64K</font>
+00069 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00070 <font class="preprocessor"></font><font class="preprocessor">#ifdef MSDOS</font>
+00071 <font class="preprocessor"></font><font class="preprocessor"># define UNALIGNED_OK</font>
+00072 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00073 <font class="preprocessor"></font>
+00074 <font class="preprocessor">#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) &amp;&amp; !defined(STDC)</font>
+00075 <font class="preprocessor"></font><font class="preprocessor"># define STDC</font>
+00076 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00077 <font class="preprocessor"></font><font class="preprocessor">#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)</font>
+00078 <font class="preprocessor"></font><font class="preprocessor"># ifndef STDC</font>
+00079 <font class="preprocessor"></font><font class="preprocessor"># define STDC</font>
+00080 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00081 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00082 <font class="preprocessor"></font>
+00083 <font class="preprocessor">#ifndef STDC</font>
+00084 <font class="preprocessor"></font><font class="preprocessor"># ifndef const </font><font class="comment">/* cannot use !defined(STDC) &amp;&amp; !defined(const) on Mac */</font>
+00085 <font class="preprocessor"># define const</font>
+00086 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00087 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00088 <font class="preprocessor"></font>
+00089 <font class="comment">/* Some Mac compilers merge all .h files incorrectly: */</font>
+00090 <font class="preprocessor">#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)</font>
+00091 <font class="preprocessor"></font><font class="preprocessor"># define NO_DUMMY_DECL</font>
+00092 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00093 <font class="preprocessor"></font>
+00094 <font class="comment">/* Old Borland C incorrectly complains about missing returns: */</font>
+00095 <font class="preprocessor">#if defined(__BORLANDC__) &amp;&amp; (__BORLANDC__ &lt; 0x500)</font>
+00096 <font class="preprocessor"></font><font class="preprocessor"># define NEED_DUMMY_RETURN</font>
+00097 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00098 <font class="preprocessor"></font>
+00099
+00100 <font class="comment">/* Maximum value for memLevel in deflateInit2 */</font>
+00101 <font class="preprocessor">#ifndef MAX_MEM_LEVEL</font>
+00102 <font class="preprocessor"></font><font class="preprocessor"># ifdef MAXSEG_64K</font>
+00103 <font class="preprocessor"></font><font class="preprocessor"># define MAX_MEM_LEVEL 8</font>
+00104 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00105 <font class="preprocessor"></font><font class="preprocessor"># define MAX_MEM_LEVEL 9</font>
+00106 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00107 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00108 <font class="preprocessor"></font>
+00109 <font class="comment">/* Maximum value for windowBits in deflateInit2 and inflateInit2.</font>
+00110 <font class="comment"> * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files</font>
+00111 <font class="comment"> * created by gzip. (Files created by minigzip can still be extracted by</font>
+00112 <font class="comment"> * gzip.)</font>
+00113 <font class="comment"> */</font>
+00114 <font class="preprocessor">#ifndef MAX_WBITS</font>
+00115 <font class="preprocessor"></font><font class="preprocessor"># define MAX_WBITS 15 </font><font class="comment">/* 32K LZ77 window */</font>
+00116 <font class="preprocessor">#endif</font>
+00117 <font class="preprocessor"></font>
+00118 <font class="comment">/* The memory requirements for deflate are (in bytes):</font>
+00119 <font class="comment"> (1 &lt;&lt; (windowBits+2)) + (1 &lt;&lt; (memLevel+9))</font>
+00120 <font class="comment"> that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)</font>
+00121 <font class="comment"> plus a few kilobytes for small objects. For example, if you want to reduce</font>
+00122 <font class="comment"> the default memory requirements from 256K to 128K, compile with</font>
+00123 <font class="comment"> make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"</font>
+00124 <font class="comment"> Of course this will generally degrade compression (there's no free lunch).</font>
+00125 <font class="comment"></font>
+00126 <font class="comment"> The memory requirements for inflate are (in bytes) 1 &lt;&lt; windowBits</font>
+00127 <font class="comment"> that is, 32K for windowBits=15 (default value) plus a few kilobytes</font>
+00128 <font class="comment"> for small objects.</font>
+00129 <font class="comment">*/</font>
+00130
+00131 <font class="comment">/* Type declarations */</font>
+00132
+00133 <font class="preprocessor">#ifndef OF </font><font class="comment">/* function prototypes */</font>
+00134 <font class="preprocessor"># ifdef STDC</font>
+00135 <font class="preprocessor"></font><font class="preprocessor"># define OF(args) args</font>
+00136 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00137 <font class="preprocessor"></font><font class="preprocessor"># define OF(args) ()</font>
+00138 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00139 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00140 <font class="preprocessor"></font>
+00141 <font class="comment">/* The following definitions for FAR are needed only for MSDOS mixed</font>
+00142 <font class="comment"> * model programming (small or medium model with some far allocations).</font>
+00143 <font class="comment"> * This was tested only with MSC; for other MSDOS compilers you may have</font>
+00144 <font class="comment"> * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,</font>
+00145 <font class="comment"> * just define FAR to be empty.</font>
+00146 <font class="comment"> */</font>
+00147 <font class="preprocessor">#if (defined(M_I86SM) || defined(M_I86MM)) &amp;&amp; !defined(__32BIT__)</font>
+00148 <font class="preprocessor"></font> <font class="comment">/* MSC small or medium model */</font>
+00149 <font class="preprocessor"># define SMALL_MEDIUM</font>
+00150 <font class="preprocessor"></font><font class="preprocessor"># ifdef _MSC_VER</font>
+00151 <font class="preprocessor"></font><font class="preprocessor"># define FAR _far</font>
+00152 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00153 <font class="preprocessor"></font><font class="preprocessor"># define FAR far</font>
+00154 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00155 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00156 <font class="preprocessor"></font><font class="preprocessor">#if defined(__BORLANDC__) &amp;&amp; (defined(__SMALL__) || defined(__MEDIUM__))</font>
+00157 <font class="preprocessor"></font><font class="preprocessor"># ifndef __32BIT__</font>
+00158 <font class="preprocessor"></font><font class="preprocessor"># define SMALL_MEDIUM</font>
+00159 <font class="preprocessor"></font><font class="preprocessor"># define FAR _far</font>
+00160 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00161 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00162 <font class="preprocessor"></font>
+00163 <font class="comment">/* Compile with -DZLIB_DLL for Windows DLL support */</font>
+00164 <font class="preprocessor">#if defined(ZLIB_DLL)</font>
+00165 <font class="preprocessor"></font><font class="preprocessor"># if defined(_WINDOWS) || defined(WINDOWS)</font>
+00166 <font class="preprocessor"></font><font class="preprocessor"># ifdef FAR</font>
+00167 <font class="preprocessor"></font><font class="preprocessor"># undef FAR</font>
+00168 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00169 <font class="preprocessor"></font><font class="preprocessor"># include &lt;windows.h&gt;</font>
+00170 <font class="preprocessor"># define ZEXPORT WINAPI</font>
+00171 <font class="preprocessor"></font><font class="preprocessor"># ifdef WIN32</font>
+00172 <font class="preprocessor"></font><font class="preprocessor"># define ZEXPORTVA WINAPIV</font>
+00173 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00174 <font class="preprocessor"></font><font class="preprocessor"># define ZEXPORTVA FAR _cdecl _export</font>
+00175 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00176 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00177 <font class="preprocessor"></font><font class="preprocessor"># if defined (__BORLANDC__)</font>
+00178 <font class="preprocessor"></font><font class="preprocessor"># if (__BORLANDC__ &gt;= 0x0500) &amp;&amp; defined (WIN32)</font>
+00179 <font class="preprocessor"></font><font class="preprocessor"># include &lt;windows.h&gt;</font>
+00180 <font class="preprocessor"># define ZEXPORT __declspec(dllexport) WINAPI</font>
+00181 <font class="preprocessor"></font><font class="preprocessor"># define ZEXPORTRVA __declspec(dllexport) WINAPIV</font>
+00182 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00183 <font class="preprocessor"></font><font class="preprocessor"># if defined (_Windows) &amp;&amp; defined (__DLL__)</font>
+00184 <font class="preprocessor"></font><font class="preprocessor"># define ZEXPORT _export</font>
+00185 <font class="preprocessor"></font><font class="preprocessor"># define ZEXPORTVA _export</font>
+00186 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00187 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00188 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00189 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00190 <font class="preprocessor"></font>
+00191 <font class="preprocessor">#if defined (__BEOS__)</font>
+00192 <font class="preprocessor"></font><font class="preprocessor"># if defined (ZLIB_DLL)</font>
+00193 <font class="preprocessor"></font><font class="preprocessor"># define ZEXTERN extern __declspec(dllexport)</font>
+00194 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00195 <font class="preprocessor"></font><font class="preprocessor"># define ZEXTERN extern __declspec(dllimport)</font>
+00196 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00197 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00198 <font class="preprocessor"></font>
+00199 <font class="preprocessor">#ifndef ZEXPORT</font>
+00200 <font class="preprocessor"></font><font class="preprocessor"># define ZEXPORT</font>
+00201 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00202 <font class="preprocessor"></font><font class="preprocessor">#ifndef ZEXPORTVA</font>
+00203 <font class="preprocessor"></font><font class="preprocessor"># define ZEXPORTVA</font>
+00204 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00205 <font class="preprocessor"></font><font class="preprocessor">#ifndef ZEXTERN</font>
+00206 <font class="preprocessor"></font><font class="preprocessor"># define ZEXTERN extern</font>
+00207 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00208 <font class="preprocessor"></font>
+00209 <font class="preprocessor">#ifndef FAR</font>
+00210 <font class="preprocessor"></font><font class="preprocessor"># define FAR</font>
+00211 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00212 <font class="preprocessor"></font>
+00213 <font class="preprocessor">#if !defined(MACOS) &amp;&amp; !defined(TARGET_OS_MAC) &amp;&amp; !defined(VCL)</font>
+00214 <font class="preprocessor"></font><font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> Byte; <font class="comment">/* 8 bits */</font>
+00215 <font class="preprocessor">#endif</font>
+00216 <font class="preprocessor"></font><font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> uInt; <font class="comment">/* 16 bits or more */</font>
+00217 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> uLong; <font class="comment">/* 32 bits or more */</font>
+00218
+00219 <font class="preprocessor">#ifdef SMALL_MEDIUM</font>
+00220 <font class="preprocessor"></font> <font class="comment">/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */</font>
+00221 <font class="preprocessor"># define Bytef Byte FAR</font>
+00222 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00223 <font class="preprocessor"></font> <font class="keyword">typedef</font> Byte FAR Bytef;
+00224 <font class="preprocessor">#endif</font>
+00225 <font class="preprocessor"></font><font class="keyword">typedef</font> <font class="keywordtype">char</font> FAR charf;
+00226 <font class="keyword">typedef</font> <font class="keywordtype">int</font> FAR intf;
+00227 <font class="keyword">typedef</font> uInt FAR uIntf;
+00228 <font class="keyword">typedef</font> uLong FAR uLongf;
+00229
+00230 <font class="preprocessor">#ifdef STDC</font>
+00231 <font class="preprocessor"></font> <font class="keyword">typedef</font> <font class="keywordtype">void</font> FAR *voidpf;
+00232 <font class="keyword">typedef</font> <font class="keywordtype">void</font> *voidp;
+00233 <font class="preprocessor">#else</font>
+00234 <font class="preprocessor"></font> <font class="keyword">typedef</font> Byte FAR *voidpf;
+00235 <font class="keyword">typedef</font> Byte *voidp;
+00236 <font class="preprocessor">#endif</font>
+00237 <font class="preprocessor"></font>
+00238 <font class="preprocessor">#ifdef HAVE_UNISTD_H</font>
+00239 <font class="preprocessor"></font><font class="preprocessor"># include &lt;sys/types.h&gt;</font> <font class="comment">/* for off_t */</font>
+00240 <font class="preprocessor"># include &lt;unistd.h&gt;</font> <font class="comment">/* for SEEK_* and off_t */</font>
+00241 <font class="preprocessor"># define z_off_t off_t</font>
+00242 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00243 <font class="preprocessor"></font><font class="preprocessor">#ifndef SEEK_SET</font>
+00244 <font class="preprocessor"></font><font class="preprocessor"># define SEEK_SET 0 </font><font class="comment">/* Seek from beginning of file. */</font>
+00245 <font class="preprocessor"># define SEEK_CUR 1 </font><font class="comment">/* Seek from current position. */</font>
+00246 <font class="preprocessor"># define SEEK_END 2 </font><font class="comment">/* Set file pointer to EOF plus "offset" */</font>
+00247 <font class="preprocessor">#endif</font>
+00248 <font class="preprocessor"></font><font class="preprocessor">#ifndef z_off_t</font>
+00249 <font class="preprocessor"></font><font class="preprocessor"># define z_off_t long</font>
+00250 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00251 <font class="preprocessor"></font>
+00252 <font class="comment">/* MVS linker does not support external names larger than 8 bytes */</font>
+00253 <font class="preprocessor">#if defined(__MVS__)</font>
+00254 <font class="preprocessor"></font><font class="preprocessor"># pragma map(deflateInit_,"DEIN")</font>
+00255 <font class="preprocessor"></font><font class="preprocessor"># pragma map(deflateInit2_,"DEIN2")</font>
+00256 <font class="preprocessor"></font><font class="preprocessor"># pragma map(deflateEnd,"DEEND")</font>
+00257 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflateInit_,"ININ")</font>
+00258 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflateInit2_,"ININ2")</font>
+00259 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflateEnd,"INEND")</font>
+00260 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflateSync,"INSY")</font>
+00261 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflateSetDictionary,"INSEDI")</font>
+00262 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_blocks,"INBL")</font>
+00263 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_blocks_new,"INBLNE")</font>
+00264 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_blocks_free,"INBLFR")</font>
+00265 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_blocks_reset,"INBLRE")</font>
+00266 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_codes_free,"INCOFR")</font>
+00267 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_codes,"INCO")</font>
+00268 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_fast,"INFA")</font>
+00269 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_flush,"INFLU")</font>
+00270 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_mask,"INMA")</font>
+00271 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_set_dictionary,"INSEDI2")</font>
+00272 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_copyright,"INCOPY")</font>
+00273 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_trees_bits,"INTRBI")</font>
+00274 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_trees_dynamic,"INTRDY")</font>
+00275 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_trees_fixed,"INTRFI")</font>
+00276 <font class="preprocessor"></font><font class="preprocessor"># pragma map(inflate_trees_free,"INTRFR")</font>
+00277 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00278 <font class="preprocessor"></font>
+00279 <font class="preprocessor">#endif </font><font class="comment">/* _ZCONF_H */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zipcomprs_8cpp-source.html b/doc/api-documentation/html/zipcomprs_8cpp-source.html
new file mode 100644
index 0000000..91e157e
--- /dev/null
+++ b/doc/api-documentation/html/zipcomprs_8cpp-source.html
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zipcomprs.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zipcomprs.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcomprs.cpp - code for class 'ZipCompress'- a driver class that provides</font>
+00003 <font class="comment"> * compression utilities. - using zlib</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00007 <font class="preprocessor">#include &lt;string&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;zipcomprs.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;zlib.h&gt;</font>
+00012
+00013 <font class="comment">/******************************************************************************</font>
+00014 <font class="comment"> * ZipCompress Constructor - Initializes data for instance of ZipCompress</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> */</font>
+00017
+00018 ZipCompress::ZipCompress() : SWCompress()
+00019 {
+00020 <font class="comment">// fprintf(stderr, "init compress\n");</font>
+00021 }
+00022
+00023
+00024 <font class="comment">/******************************************************************************</font>
+00025 <font class="comment"> * ZipCompress Destructor - Cleans up instance of ZipCompress</font>
+00026 <font class="comment"> */</font>
+00027
+00028 ZipCompress::~ZipCompress() {
+00029 }
+00030
+00031
+00032 <font class="comment">/******************************************************************************</font>
+00033 <font class="comment"> * ZipCompress::Encode - This function "encodes" the input stream into the</font>
+00034 <font class="comment"> * output stream.</font>
+00035 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00036 <font class="comment"> * used to separate this method from the actual</font>
+00037 <font class="comment"> * i/o.</font>
+00038 <font class="comment"> * NOTE: must set zlen for parent class to know length of</font>
+00039 <font class="comment"> * compressed buffer.</font>
+00040 <font class="comment"> */</font>
+00041
+00042 <font class="keywordtype">void</font> ZipCompress::Encode(<font class="keywordtype">void</font>)
+00043 {
+00044 <font class="comment">/*</font>
+00045 <font class="comment">ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,</font>
+00046 <font class="comment"> const Bytef *source, uLong sourceLen));</font>
+00047 <font class="comment"> Compresses the source buffer into the destination buffer. sourceLen is</font>
+00048 <font class="comment"> the byte length of the source buffer. Upon entry, destLen is the total</font>
+00049 <font class="comment"> size of the destination buffer, which must be at least 0.1% larger than</font>
+00050 <font class="comment"> sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the</font>
+00051 <font class="comment"> compressed buffer.</font>
+00052 <font class="comment"> This function can be used to compress a whole file at once if the</font>
+00053 <font class="comment"> input file is mmap'ed.</font>
+00054 <font class="comment"> compress returns Z_OK if success, Z_MEM_ERROR if there was not</font>
+00055 <font class="comment"> enough memory, Z_BUF_ERROR if there was not enough room in the output</font>
+00056 <font class="comment"> buffer.</font>
+00057 <font class="comment">*/</font>
+00058 direct = 0; <font class="comment">// set direction needed by parent [Get|Send]Chars()</font>
+00059
+00060 <font class="comment">// get buffer</font>
+00061 <font class="keywordtype">char</font> chunk[1024];
+00062 <font class="keywordtype">char</font> *buf = (<font class="keywordtype">char</font> *)calloc(1, 1024);
+00063 <font class="keywordtype">char</font> *chunkbuf = buf;
+00064 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> chunklen;
+00065 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len = 0;
+00066 <font class="keywordflow">while</font>((chunklen = GetChars(chunk, 1023))) {
+00067 memcpy(chunkbuf, chunk, chunklen);
+00068 len += chunklen;
+00069 <font class="keywordflow">if</font> (chunklen &lt; 1023)
+00070 <font class="keywordflow">break</font>;
+00071 <font class="keywordflow">else</font> buf = (<font class="keywordtype">char</font> *)realloc(buf, len + 1024);
+00072 chunkbuf = buf+len;
+00073 }
+00074
+00075
+00076 zlen = (long) (len*1.001)+15;
+00077 <font class="keywordtype">char</font> *zbuf = <font class="keyword">new</font> <font class="keywordtype">char</font>[zlen+1];
+00078 <font class="keywordflow">if</font> (len)
+00079 {
+00080 <font class="comment">//printf("Doing compress\n");</font>
+00081 <font class="keywordflow">if</font> (compress((Bytef*)zbuf, &amp;zlen, (<font class="keyword">const</font> Bytef*)buf, len)!=Z_OK)
+00082 {
+00083 printf(<font class="stringliteral">"ERROR in compression\n"</font>);
+00084 }
+00085 <font class="keywordflow">else</font> {
+00086 SendChars(zbuf, zlen);
+00087 }
+00088 }
+00089 <font class="keywordflow">else</font>
+00090 {
+00091 fprintf(stderr, <font class="stringliteral">"No buffer to compress\n"</font>);
+00092 }
+00093 <font class="keyword">delete</font> [] zbuf;
+00094 free (buf);
+00095 }
+00096
+00097
+00098 <font class="comment">/******************************************************************************</font>
+00099 <font class="comment"> * ZipCompress::Decode - This function "decodes" the input stream into the</font>
+00100 <font class="comment"> * output stream.</font>
+00101 <font class="comment"> * The GetChars() and SendChars() functions are</font>
+00102 <font class="comment"> * used to separate this method from the actual</font>
+00103 <font class="comment"> * i/o.</font>
+00104 <font class="comment"> */</font>
+00105
+00106 <font class="keywordtype">void</font> ZipCompress::Decode(<font class="keywordtype">void</font>)
+00107 {
+00108 <font class="comment">/*</font>
+00109 <font class="comment">ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,</font>
+00110 <font class="comment"> const Bytef *source, uLong sourceLen));</font>
+00111 <font class="comment"> Decompresses the source buffer into the destination buffer. sourceLen is</font>
+00112 <font class="comment"> the byte length of the source buffer. Upon entry, destLen is the total</font>
+00113 <font class="comment"> size of the destination buffer, which must be large enough to hold the</font>
+00114 <font class="comment"> entire uncompressed data. (The size of the uncompressed data must have</font>
+00115 <font class="comment"> been saved previously by the compressor and transmitted to the decompressor</font>
+00116 <font class="comment"> by some mechanism outside the scope of this compression library.)</font>
+00117 <font class="comment"> Upon exit, destLen is the actual size of the compressed buffer.</font>
+00118 <font class="comment"> This function can be used to decompress a whole file at once if the</font>
+00119 <font class="comment"> input file is mmap'ed.</font>
+00120 <font class="comment"></font>
+00121 <font class="comment"> uncompress returns Z_OK if success, Z_MEM_ERROR if there was not</font>
+00122 <font class="comment"> enough memory, Z_BUF_ERROR if there was not enough room in the output</font>
+00123 <font class="comment"> buffer, or Z_DATA_ERROR if the input data was corrupted.</font>
+00124 <font class="comment">*/</font>
+00125
+00126 <font class="comment">// get buffer</font>
+00127 <font class="keywordtype">char</font> chunk[1024];
+00128 <font class="keywordtype">char</font> *zbuf = (<font class="keywordtype">char</font> *)calloc(1, 1024);
+00129 <font class="keywordtype">char</font> *chunkbuf = zbuf;
+00130 <font class="keywordtype">int</font> chunklen;
+00131 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> zlen = 0;
+00132 <font class="keywordflow">while</font>((chunklen = GetChars(chunk, 1023))) {
+00133 memcpy(chunkbuf, chunk, chunklen);
+00134 zlen += chunklen;
+00135 <font class="keywordflow">if</font> (chunklen &lt; 1023)
+00136 <font class="keywordflow">break</font>;
+00137 <font class="keywordflow">else</font> zbuf = (<font class="keywordtype">char</font> *)realloc(zbuf, zlen + 1024);
+00138 chunkbuf = zbuf + zlen;
+00139 }
+00140
+00141 <font class="comment">//printf("Decoding complength{%ld} uncomp{%ld}\n", zlen, blen);</font>
+00142 <font class="keywordflow">if</font> (zlen) {
+00143 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> blen = zlen*20; <font class="comment">// trust compression is less than 1000%</font>
+00144 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font>[blen];
+00145 <font class="comment">//printf("Doing decompress {%s}\n", zbuf);</font>
+00146 <font class="keywordflow">if</font> (uncompress((Bytef*)buf, &amp;blen, (Bytef*)zbuf, zlen) != Z_OK) {
+00147 fprintf(stderr, <font class="stringliteral">"no room in outbuffer to during decompression. see zipcomp.cpp\n"</font>);
+00148 }
+00149 SendChars(buf, blen);
+00150 <font class="keyword">delete</font> [] buf;
+00151 slen = blen;
+00152 }
+00153 <font class="keywordflow">else</font> {
+00154 fprintf(stderr, <font class="stringliteral">"No buffer to decompress!\n"</font>);
+00155 }
+00156 <font class="comment">//printf("Finished decoding\n");</font>
+00157 free (zbuf);
+00158 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zipcomprs_8h-source.html b/doc/api-documentation/html/zipcomprs_8h-source.html
new file mode 100644
index 0000000..04fdcdb
--- /dev/null
+++ b/doc/api-documentation/html/zipcomprs_8h-source.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zipcomprs.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zipcomprs.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * swcomprs.h - definition of Class SWCompress used for data compression</font>
+00003 <font class="comment"> *</font>
+00004 <font class="comment"> * $Id: zipcomprs_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00005 <font class="comment"> *</font>
+00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00007 <font class="comment"> * CrossWire Bible Society</font>
+00008 <font class="comment"> * P. O. Box 2528</font>
+00009 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00010 <font class="comment"> *</font>
+00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00012 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00013 <font class="comment"> * Free Software Foundation version 2.</font>
+00014 <font class="comment"> *</font>
+00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"> *</font>
+00020 <font class="comment"> */</font>
+00021
+00022 <font class="preprocessor">#ifndef ZIPCOMPRS_H</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#define ZIPCOMPRS_H</font>
+00024 <font class="preprocessor"></font>
+00025 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00026
+00027 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00028
+00029 <font class="keyword">class </font>SWDLLEXPORT ZipCompress:<font class="keyword">public</font> SWCompress
+00030 {
+00031 <font class="keyword">protected</font>:
+00032 <font class="keyword">public</font>:
+00033 ZipCompress ();
+00034 <font class="keyword">virtual</font> ~ ZipCompress ();
+00035 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Encode (<font class="keywordtype">void</font>);
+00036 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Decode (<font class="keywordtype">void</font>);
+00037 };
+00038
+00039 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zld_8cpp-source.html b/doc/api-documentation/html/zld_8cpp-source.html
new file mode 100644
index 0000000..d069c6b
--- /dev/null
+++ b/doc/api-documentation/html/zld_8cpp-source.html
@@ -0,0 +1,219 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zld.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zld.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawld.cpp - code for class 'RawLD'- a module that reads raw lexicon and</font>
+00003 <font class="comment"> * dictionary files: *.dat *.idx</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;zstr.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;zld.h&gt;</font>
+00021
+00022
+00023 <font class="comment">/******************************************************************************</font>
+00024 <font class="comment"> * RawLD Constructor - Initializes data for instance of RawLD</font>
+00025 <font class="comment"> *</font>
+00026 <font class="comment"> * ENT: ipath - path and filename of files (no extension)</font>
+00027 <font class="comment"> * iname - Internal name for module</font>
+00028 <font class="comment"> * idesc - Name to display to user for module</font>
+00029 <font class="comment"> * idisp - Display object to use for displaying</font>
+00030 <font class="comment"> */</font>
+00031
+00032 zLD::zLD(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <font class="keywordtype">long</font> blockCount, SWCompress *icomp, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : zStr(ipath, -1, blockCount, icomp), <a class="code" href="class_s_w_l_d.html">SWLD</a>(iname, idesc, idisp, enc, dir, mark, ilang)
+00033 {
+00034 }
+00035
+00036
+00037 <font class="comment">/******************************************************************************</font>
+00038 <font class="comment"> * RawLD Destructor - Cleans up instance of RawLD</font>
+00039 <font class="comment"> */</font>
+00040
+00041 zLD::~zLD()
+00042 {
+00043 }
+00044
+00045
+00046 <font class="comment">/******************************************************************************</font>
+00047 <font class="comment"> * zLD::strongsPad - Pads a key if it is 100% digits to 5 places</font>
+00048 <font class="comment"> *</font>
+00049 <font class="comment"> * ENT: buf - buffer to check and pad</font>
+00050 <font class="comment"> */</font>
+00051
+00052 <font class="keywordtype">void</font> zLD::strongsPad(<font class="keywordtype">char</font> *buf)
+00053 {
+00054 <font class="keyword">const</font> <font class="keywordtype">char</font> *check;
+00055 <font class="keywordtype">long</font> size = 0;
+00056 <font class="keywordtype">int</font> len = strlen(buf);
+00057 <font class="keywordflow">if</font> ((len &lt; 5) &amp;&amp; (len &gt; 0)) {
+00058 <font class="keywordflow">for</font> (check = buf; *check; check++) {
+00059 <font class="keywordflow">if</font> (!isdigit(*check))
+00060 <font class="keywordflow">break</font>;
+00061 <font class="keywordflow">else</font> size++;
+00062 }
+00063
+00064 <font class="keywordflow">if</font> ((size == len) &amp;&amp; size)
+00065 sprintf(buf, <font class="stringliteral">"%.5d"</font>, atoi(buf));
+00066 }
+00067 }
+00068
+00069
+00070 <font class="comment">/******************************************************************************</font>
+00071 <font class="comment"> * zLD::getEntry - Looks up entry from data file. 'Snaps' to closest</font>
+00072 <font class="comment"> * entry and sets 'entrybuf'.</font>
+00073 <font class="comment"> *</font>
+00074 <font class="comment"> * ENT: away - number of entries offset from key (default = 0)</font>
+00075 <font class="comment"> *</font>
+00076 <font class="comment"> * RET: error status</font>
+00077 <font class="comment"> */</font>
+00078
+00079 <font class="keywordtype">char</font> zLD::getEntry(<font class="keywordtype">long</font> away)
+00080 {
+00081 <font class="keywordtype">char</font> *idxbuf = 0;
+00082 <font class="keywordtype">char</font> *ebuf = 0;
+00083 <font class="keywordtype">char</font> retval = 0;
+00084 <font class="keywordtype">long</font> index;
+00085 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size;
+00086 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(*key) + 6 ];
+00087 strcpy(buf, *key);
+00088
+00089 strongsPad(buf);
+00090
+00091 *entrybuf = 0;
+00092 <font class="keywordflow">if</font> (!(retval = findKeyIndex(buf, &amp;index, away))) {
+00093 <a class="code" href="class_verse_key.html#a11">getText</a>(index, &amp;idxbuf, &amp;ebuf);
+00094 size = strlen(ebuf) + 1;
+00095 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size * FILTERPAD ];
+00096 strcpy(entrybuf, ebuf);
+00097
+00098 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00099 <font class="keywordflow">if</font> (!key-&gt;Persist()) <font class="comment">// If we have our own key</font>
+00100 *key = idxbuf; <font class="comment">// reset it to entry index buffer</font>
+00101
+00102 stdstr(&amp;entkeytxt, idxbuf); <font class="comment">// set entry key text that module 'snapped' to.</font>
+00103 free(idxbuf);
+00104 free(ebuf);
+00105 }
+00106 <font class="keywordflow">else</font> {
+00107 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ 5 ];
+00108 entrybuf[0] = 0;
+00109 entrybuf[1] = 0;
+00110 }
+00111
+00112 <font class="keyword">delete</font> [] buf;
+00113 <font class="keywordflow">return</font> retval;
+00114 }
+00115
+00116
+00117 <font class="comment">/******************************************************************************</font>
+00118 <font class="comment"> * zLD::operator char * - Returns the correct entry when char * cast</font>
+00119 <font class="comment"> * is requested</font>
+00120 <font class="comment"> *</font>
+00121 <font class="comment"> * RET: string buffer with entry</font>
+00122 <font class="comment"> */</font>
+00123
+00124 <font class="keywordtype">char</font> *zLD::getRawEntry() {
+00125 <font class="keywordflow">if</font> (!getEntry() &amp;&amp; !isUnicode()) {
+00126 prepText(entrybuf);
+00127 }
+00128
+00129 <font class="keywordflow">return</font> entrybuf;
+00130 }
+00131
+00132
+00133 <font class="comment">/******************************************************************************</font>
+00134 <font class="comment"> * zLD::operator += - Increments module key a number of entries</font>
+00135 <font class="comment"> *</font>
+00136 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00137 <font class="comment"> *</font>
+00138 <font class="comment"> * RET: *this</font>
+00139 <font class="comment"> */</font>
+00140
+00141 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zLD::operator +=(<font class="keywordtype">int</font> increment)
+00142 {
+00143 <font class="keywordtype">char</font> tmperror;
+00144
+00145 <font class="keywordflow">if</font> (key-&gt;Traversable()) {
+00146 *key += <a class="code" href="class_verse_key.html#a18">increment</a>;
+00147 error = key-&gt;Error();
+00148 <a class="code" href="class_verse_key.html#a18">increment</a> = 0;
+00149 }
+00150
+00151 tmperror = (getEntry(<a class="code" href="class_verse_key.html#a18">increment</a>)) ? KEYERR_OUTOFBOUNDS : 0;
+00152 error = (error)?error:tmperror;
+00153 *key = entkeytxt;
+00154 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00155 }
+00156
+00157
+00158 <font class="comment">/******************************************************************************</font>
+00159 <font class="comment"> * zLD::operator =(SW_POSITION) - Positions this key if applicable</font>
+00160 <font class="comment"> */</font>
+00161
+00162 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zLD::operator =(SW_POSITION p)
+00163 {
+00164 <font class="keywordflow">if</font> (!key-&gt;Traversable()) {
+00165 <font class="keywordflow">switch</font> (p) {
+00166 <font class="keywordflow">case</font> POS_TOP:
+00167 *key = <font class="stringliteral">""</font>;
+00168 <font class="keywordflow">break</font>;
+00169 <font class="keywordflow">case</font> POS_BOTTOM:
+00170 *key = <font class="stringliteral">"zzzzzzzzz"</font>;
+00171 <font class="keywordflow">break</font>;
+00172 }
+00173 }
+00174 <font class="keywordflow">else</font> *key = p;
+00175 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00176 }
+00177
+00178
+00179 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zLD::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00180 <a class="code" href="class_verse_key.html#a13">setText</a>(*key, inbuf, len);
+00181
+00182 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00183 }
+00184
+00185 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zLD::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00186 <font class="keywordflow">return</font> setentry(inbuf, 0);
+00187 }
+00188
+00189
+00190 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zLD::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00191 linkEntry(*key, *inkey);
+00192
+00193 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00194 }
+00195
+00196
+00197 <font class="comment">/******************************************************************************</font>
+00198 <font class="comment"> * RawFiles::deleteEntry - deletes this entry</font>
+00199 <font class="comment"> *</font>
+00200 <font class="comment"> * RET: *this</font>
+00201 <font class="comment"> */</font>
+00202
+00203 <font class="keywordtype">void</font> zLD::deleteEntry() {
+00204 <a class="code" href="class_verse_key.html#a13">setText</a>(*key, <font class="stringliteral">""</font>);
+00205 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zld_8h-source.html b/doc/api-documentation/html/zld_8h-source.html
new file mode 100644
index 0000000..59646d1
--- /dev/null
+++ b/doc/api-documentation/html/zld_8h-source.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zld.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zld.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * zld.cpp - code for class 'zLD'- a module that reads compressed lexicon and</font>
+00003 <font class="comment"> * dictionary files.</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: zld_8h-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef ZLD_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define ZLD_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;zstr.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swld.h&gt;</font>
+00028
+00029 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00030
+00031 <font class="keyword">class </font>SWDLLEXPORT zLD:<font class="keyword">public</font> zStr, <font class="keyword">public</font> <a class="code" href="class_s_w_l_d.html">SWLD</a> {
+00032
+00033 <font class="keywordtype">void</font> strongsPad (<font class="keywordtype">char</font> *buf);
+00034 <font class="keywordtype">char</font> getEntry (<font class="keywordtype">long</font> away = 0);
+00035
+00036 <font class="keyword">public</font>:
+00037
+00038
+00039 zLD(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc = 0, <font class="keywordtype">long</font> blockCount = 200, SWCompress *icomp = 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00040 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00041 <font class="keyword">virtual</font> ~zLD();
+00042 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a>();
+00043
+00044 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a40">operator =</a>(SW_POSITION pos);
+00045 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a37">operator +=</a>(<font class="keywordtype">int</font> increment);
+00046 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a36">operator -=</a>(<font class="keywordtype">int</font> decrement) {
+00047 <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_s_w_module.html#a37">operator +=</a>(-decrement);
+00048 }
+00049 <font class="comment">// write interface ----------------------------</font>
+00050 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfd-&gt;getFd() &gt; 0) &amp;&amp; ((idxfd-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00051 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *path) {
+00052 <font class="keywordflow">return</font> zStr::createModule (path);
+00053 }
+00054
+00055 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00056 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00057 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00058 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00059 <font class="comment">// end write interface ------------------------</font>
+00060
+00061 <font class="comment">// swcacher interface ----------------------</font>
+00062 <font class="keyword">virtual</font> <font class="keywordtype">void</font> flush() { flushCache(); }
+00063 <font class="comment">// end swcacher interface ----------------------</font>
+00064 };
+00065
+00066
+00067 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zlib_8h-source.html b/doc/api-documentation/html/zlib_8h-source.html
new file mode 100644
index 0000000..39ecb6b
--- /dev/null
+++ b/doc/api-documentation/html/zlib_8h-source.html
@@ -0,0 +1,907 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zlib.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zlib.h</h1><div class="fragment"><pre>00001 <font class="comment">/* zlib.h -- interface of the 'zlib' general purpose compression library</font>
+00002 <font class="comment"> version 1.1.3, July 9th, 1998</font>
+00003 <font class="comment"></font>
+00004 <font class="comment"> Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</font>
+00005 <font class="comment"></font>
+00006 <font class="comment"> This software is provided 'as-is', without any express or implied</font>
+00007 <font class="comment"> warranty. In no event will the authors be held liable for any damages</font>
+00008 <font class="comment"> arising from the use of this software.</font>
+00009 <font class="comment"></font>
+00010 <font class="comment"> Permission is granted to anyone to use this software for any purpose,</font>
+00011 <font class="comment"> including commercial applications, and to alter it and redistribute it</font>
+00012 <font class="comment"> freely, subject to the following restrictions:</font>
+00013 <font class="comment"></font>
+00014 <font class="comment"> 1. The origin of this software must not be misrepresented; you must not</font>
+00015 <font class="comment"> claim that you wrote the original software. If you use this software</font>
+00016 <font class="comment"> in a product, an acknowledgment in the product documentation would be</font>
+00017 <font class="comment"> appreciated but is not required.</font>
+00018 <font class="comment"> 2. Altered source versions must be plainly marked as such, and must not be</font>
+00019 <font class="comment"> misrepresented as being the original software.</font>
+00020 <font class="comment"> 3. This notice may not be removed or altered from any source distribution.</font>
+00021 <font class="comment"></font>
+00022 <font class="comment"> Jean-loup Gailly Mark Adler</font>
+00023 <font class="comment"> jloup@gzip.org madler@alumni.caltech.edu</font>
+00024 <font class="comment"></font>
+00025 <font class="comment"></font>
+00026 <font class="comment"> The data format used by the zlib library is described by RFCs (Request for</font>
+00027 <font class="comment"> Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt</font>
+00028 <font class="comment"> (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).</font>
+00029 <font class="comment">*/</font>
+00030
+00031 <font class="preprocessor">#ifndef _ZLIB_H</font>
+00032 <font class="preprocessor"></font><font class="preprocessor">#define _ZLIB_H</font>
+00033 <font class="preprocessor"></font>
+00034 <font class="preprocessor">#include "zconf.h"</font>
+00035
+00036 <font class="preprocessor">#ifdef __cplusplus</font>
+00037 <font class="preprocessor"></font><font class="keyword">extern</font> <font class="stringliteral">"C"</font> {
+00038 <font class="preprocessor">#endif</font>
+00039 <font class="preprocessor"></font>
+00040 <font class="preprocessor">#define ZLIB_VERSION "1.1.3"</font>
+00041 <font class="preprocessor"></font>
+00042 <font class="comment">/* </font>
+00043 <font class="comment"> The 'zlib' compression library provides in-memory compression and</font>
+00044 <font class="comment"> decompression functions, including integrity checks of the uncompressed</font>
+00045 <font class="comment"> data. This version of the library supports only one compression method</font>
+00046 <font class="comment"> (deflation) but other algorithms will be added later and will have the same</font>
+00047 <font class="comment"> stream interface.</font>
+00048 <font class="comment"></font>
+00049 <font class="comment"> Compression can be done in a single step if the buffers are large</font>
+00050 <font class="comment"> enough (for example if an input file is mmap'ed), or can be done by</font>
+00051 <font class="comment"> repeated calls of the compression function. In the latter case, the</font>
+00052 <font class="comment"> application must provide more input and/or consume the output</font>
+00053 <font class="comment"> (providing more output space) before each call.</font>
+00054 <font class="comment"></font>
+00055 <font class="comment"> The library also supports reading and writing files in gzip (.gz) format</font>
+00056 <font class="comment"> with an interface similar to that of stdio.</font>
+00057 <font class="comment"></font>
+00058 <font class="comment"> The library does not install any signal handler. The decoder checks</font>
+00059 <font class="comment"> the consistency of the compressed data, so the library should never</font>
+00060 <font class="comment"> crash even in case of corrupted input.</font>
+00061 <font class="comment">*/</font>
+00062
+00063 <font class="keyword">typedef</font> voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
+00064 <font class="keyword">typedef</font> void (*free_func) OF((voidpf opaque, voidpf address));
+00065
+00066 <font class="keyword">struct </font>internal_state;
+00067
+00068 <font class="keyword">typedef</font> <font class="keyword">struct </font>z_stream_s {
+00069 Bytef *next_in; <font class="comment">/* next input byte */</font>
+00070 uInt avail_in; <font class="comment">/* number of bytes available at next_in */</font>
+00071 uLong total_in; <font class="comment">/* total nb of input bytes read so far */</font>
+00072
+00073 Bytef *next_out; <font class="comment">/* next output byte should be put there */</font>
+00074 uInt avail_out; <font class="comment">/* remaining free space at next_out */</font>
+00075 uLong total_out; <font class="comment">/* total nb of bytes output so far */</font>
+00076
+00077 <font class="keywordtype">char</font> *msg; <font class="comment">/* last error message, NULL if no error */</font>
+00078 <font class="keyword">struct </font>internal_state FAR *state; <font class="comment">/* not visible by applications */</font>
+00079
+00080 alloc_func zalloc; <font class="comment">/* used to allocate the internal state */</font>
+00081 free_func zfree; <font class="comment">/* used to free the internal state */</font>
+00082 voidpf opaque; <font class="comment">/* private data object passed to zalloc and zfree */</font>
+00083
+00084 <font class="keywordtype">int</font> data_type; <font class="comment">/* best guess about the data type: ascii or binary */</font>
+00085 uLong adler; <font class="comment">/* adler32 value of the uncompressed data */</font>
+00086 uLong reserved; <font class="comment">/* reserved for future use */</font>
+00087 } z_stream;
+00088
+00089 <font class="keyword">typedef</font> z_stream FAR *z_streamp;
+00090
+00091 <font class="comment">/*</font>
+00092 <font class="comment"> The application must update next_in and avail_in when avail_in has</font>
+00093 <font class="comment"> dropped to zero. It must update next_out and avail_out when avail_out</font>
+00094 <font class="comment"> has dropped to zero. The application must initialize zalloc, zfree and</font>
+00095 <font class="comment"> opaque before calling the init function. All other fields are set by the</font>
+00096 <font class="comment"> compression library and must not be updated by the application.</font>
+00097 <font class="comment"></font>
+00098 <font class="comment"> The opaque value provided by the application will be passed as the first</font>
+00099 <font class="comment"> parameter for calls of zalloc and zfree. This can be useful for custom</font>
+00100 <font class="comment"> memory management. The compression library attaches no meaning to the</font>
+00101 <font class="comment"> opaque value.</font>
+00102 <font class="comment"></font>
+00103 <font class="comment"> zalloc must return Z_NULL if there is not enough memory for the object.</font>
+00104 <font class="comment"> If zlib is used in a multi-threaded application, zalloc and zfree must be</font>
+00105 <font class="comment"> thread safe.</font>
+00106 <font class="comment"></font>
+00107 <font class="comment"> On 16-bit systems, the functions zalloc and zfree must be able to allocate</font>
+00108 <font class="comment"> exactly 65536 bytes, but will not be required to allocate more than this</font>
+00109 <font class="comment"> if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,</font>
+00110 <font class="comment"> pointers returned by zalloc for objects of exactly 65536 bytes *must*</font>
+00111 <font class="comment"> have their offset normalized to zero. The default allocation function</font>
+00112 <font class="comment"> provided by this library ensures this (see zutil.c). To reduce memory</font>
+00113 <font class="comment"> requirements and avoid any allocation of 64K objects, at the expense of</font>
+00114 <font class="comment"> compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).</font>
+00115 <font class="comment"></font>
+00116 <font class="comment"> The fields total_in and total_out can be used for statistics or</font>
+00117 <font class="comment"> progress reports. After compression, total_in holds the total size of</font>
+00118 <font class="comment"> the uncompressed data and may be saved for use in the decompressor</font>
+00119 <font class="comment"> (particularly if the decompressor wants to decompress everything in</font>
+00120 <font class="comment"> a single step).</font>
+00121 <font class="comment">*/</font>
+00122
+00123 <font class="comment">/* constants */</font>
+00124
+00125 <font class="preprocessor">#define Z_NO_FLUSH 0</font>
+00126 <font class="preprocessor"></font><font class="preprocessor">#define Z_PARTIAL_FLUSH 1 </font><font class="comment">/* will be removed, use Z_SYNC_FLUSH instead */</font>
+00127 <font class="preprocessor">#define Z_SYNC_FLUSH 2</font>
+00128 <font class="preprocessor"></font><font class="preprocessor">#define Z_FULL_FLUSH 3</font>
+00129 <font class="preprocessor"></font><font class="preprocessor">#define Z_FINISH 4</font>
+00130 <font class="preprocessor"></font><font class="comment">/* Allowed flush values; see deflate() below for details */</font>
+00131
+00132 <font class="preprocessor">#define Z_OK 0</font>
+00133 <font class="preprocessor"></font><font class="preprocessor">#define Z_STREAM_END 1</font>
+00134 <font class="preprocessor"></font><font class="preprocessor">#define Z_NEED_DICT 2</font>
+00135 <font class="preprocessor"></font><font class="preprocessor">#define Z_ERRNO (-1)</font>
+00136 <font class="preprocessor"></font><font class="preprocessor">#define Z_STREAM_ERROR (-2)</font>
+00137 <font class="preprocessor"></font><font class="preprocessor">#define Z_DATA_ERROR (-3)</font>
+00138 <font class="preprocessor"></font><font class="preprocessor">#define Z_MEM_ERROR (-4)</font>
+00139 <font class="preprocessor"></font><font class="preprocessor">#define Z_BUF_ERROR (-5)</font>
+00140 <font class="preprocessor"></font><font class="preprocessor">#define Z_VERSION_ERROR (-6)</font>
+00141 <font class="preprocessor"></font><font class="comment">/* Return codes for the compression/decompression functions. Negative</font>
+00142 <font class="comment"> * values are errors, positive values are used for special but normal events.</font>
+00143 <font class="comment"> */</font>
+00144
+00145 <font class="preprocessor">#define Z_NO_COMPRESSION 0</font>
+00146 <font class="preprocessor"></font><font class="preprocessor">#define Z_BEST_SPEED 1</font>
+00147 <font class="preprocessor"></font><font class="preprocessor">#define Z_BEST_COMPRESSION 9</font>
+00148 <font class="preprocessor"></font><font class="preprocessor">#define Z_DEFAULT_COMPRESSION (-1)</font>
+00149 <font class="preprocessor"></font><font class="comment">/* compression levels */</font>
+00150
+00151 <font class="preprocessor">#define Z_FILTERED 1</font>
+00152 <font class="preprocessor"></font><font class="preprocessor">#define Z_HUFFMAN_ONLY 2</font>
+00153 <font class="preprocessor"></font><font class="preprocessor">#define Z_DEFAULT_STRATEGY 0</font>
+00154 <font class="preprocessor"></font><font class="comment">/* compression strategy; see deflateInit2() below for details */</font>
+00155
+00156 <font class="preprocessor">#define Z_BINARY 0</font>
+00157 <font class="preprocessor"></font><font class="preprocessor">#define Z_ASCII 1</font>
+00158 <font class="preprocessor"></font><font class="preprocessor">#define Z_UNKNOWN 2</font>
+00159 <font class="preprocessor"></font><font class="comment">/* Possible values of the data_type field */</font>
+00160
+00161 <font class="preprocessor">#define Z_DEFLATED 8</font>
+00162 <font class="preprocessor"></font><font class="comment">/* The deflate compression method (the only one supported in this version) */</font>
+00163
+00164 <font class="preprocessor">#define Z_NULL 0 </font><font class="comment">/* for initializing zalloc, zfree, opaque */</font>
+00165
+00166 <font class="preprocessor">#define zlib_version zlibVersion()</font>
+00167 <font class="preprocessor"></font><font class="comment">/* for compatibility with versions &lt; 1.0.2 */</font>
+00168
+00169 <font class="comment">/* basic functions */</font>
+00170
+00171 ZEXTERN <font class="keyword">const</font> <font class="keywordtype">char</font> * ZEXPORT zlibVersion OF((<font class="keywordtype">void</font>));
+00172 <font class="comment">/* The application can compare zlibVersion and ZLIB_VERSION for consistency.</font>
+00173 <font class="comment"> If the first character differs, the library code actually used is</font>
+00174 <font class="comment"> not compatible with the zlib.h header file used by the application.</font>
+00175 <font class="comment"> This check is automatically made by deflateInit and inflateInit.</font>
+00176 <font class="comment"> */</font>
+00177
+00178 <font class="comment">/* </font>
+00179 <font class="comment">ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));</font>
+00180 <font class="comment"></font>
+00181 <font class="comment"> Initializes the internal stream state for compression. The fields</font>
+00182 <font class="comment"> zalloc, zfree and opaque must be initialized before by the caller.</font>
+00183 <font class="comment"> If zalloc and zfree are set to Z_NULL, deflateInit updates them to</font>
+00184 <font class="comment"> use default allocation functions.</font>
+00185 <font class="comment"></font>
+00186 <font class="comment"> The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:</font>
+00187 <font class="comment"> 1 gives best speed, 9 gives best compression, 0 gives no compression at</font>
+00188 <font class="comment"> all (the input data is simply copied a block at a time).</font>
+00189 <font class="comment"> Z_DEFAULT_COMPRESSION requests a default compromise between speed and</font>
+00190 <font class="comment"> compression (currently equivalent to level 6).</font>
+00191 <font class="comment"></font>
+00192 <font class="comment"> deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not</font>
+00193 <font class="comment"> enough memory, Z_STREAM_ERROR if level is not a valid compression level,</font>
+00194 <font class="comment"> Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible</font>
+00195 <font class="comment"> with the version assumed by the caller (ZLIB_VERSION).</font>
+00196 <font class="comment"> msg is set to null if there is no error message. deflateInit does not</font>
+00197 <font class="comment"> perform any compression: this will be done by deflate().</font>
+00198 <font class="comment">*/</font>
+00199
+00200
+00201 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflate OF((z_streamp strm, <font class="keywordtype">int</font> flush));
+00202 <font class="comment">/*</font>
+00203 <font class="comment"> deflate compresses as much data as possible, and stops when the input</font>
+00204 <font class="comment"> buffer becomes empty or the output buffer becomes full. It may introduce some</font>
+00205 <font class="comment"> output latency (reading input without producing any output) except when</font>
+00206 <font class="comment"> forced to flush.</font>
+00207 <font class="comment"></font>
+00208 <font class="comment"> The detailed semantics are as follows. deflate performs one or both of the</font>
+00209 <font class="comment"> following actions:</font>
+00210 <font class="comment"></font>
+00211 <font class="comment"> - Compress more input starting at next_in and update next_in and avail_in</font>
+00212 <font class="comment"> accordingly. If not all input can be processed (because there is not</font>
+00213 <font class="comment"> enough room in the output buffer), next_in and avail_in are updated and</font>
+00214 <font class="comment"> processing will resume at this point for the next call of deflate().</font>
+00215 <font class="comment"></font>
+00216 <font class="comment"> - Provide more output starting at next_out and update next_out and avail_out</font>
+00217 <font class="comment"> accordingly. This action is forced if the parameter flush is non zero.</font>
+00218 <font class="comment"> Forcing flush frequently degrades the compression ratio, so this parameter</font>
+00219 <font class="comment"> should be set only when necessary (in interactive applications).</font>
+00220 <font class="comment"> Some output may be provided even if flush is not set.</font>
+00221 <font class="comment"></font>
+00222 <font class="comment"> Before the call of deflate(), the application should ensure that at least</font>
+00223 <font class="comment"> one of the actions is possible, by providing more input and/or consuming</font>
+00224 <font class="comment"> more output, and updating avail_in or avail_out accordingly; avail_out</font>
+00225 <font class="comment"> should never be zero before the call. The application can consume the</font>
+00226 <font class="comment"> compressed output when it wants, for example when the output buffer is full</font>
+00227 <font class="comment"> (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK</font>
+00228 <font class="comment"> and with zero avail_out, it must be called again after making room in the</font>
+00229 <font class="comment"> output buffer because there might be more output pending.</font>
+00230 <font class="comment"></font>
+00231 <font class="comment"> If the parameter flush is set to Z_SYNC_FLUSH, all pending output is</font>
+00232 <font class="comment"> flushed to the output buffer and the output is aligned on a byte boundary, so</font>
+00233 <font class="comment"> that the decompressor can get all input data available so far. (In particular</font>
+00234 <font class="comment"> avail_in is zero after the call if enough output space has been provided</font>
+00235 <font class="comment"> before the call.) Flushing may degrade compression for some compression</font>
+00236 <font class="comment"> algorithms and so it should be used only when necessary.</font>
+00237 <font class="comment"></font>
+00238 <font class="comment"> If flush is set to Z_FULL_FLUSH, all output is flushed as with</font>
+00239 <font class="comment"> Z_SYNC_FLUSH, and the compression state is reset so that decompression can</font>
+00240 <font class="comment"> restart from this point if previous compressed data has been damaged or if</font>
+00241 <font class="comment"> random access is desired. Using Z_FULL_FLUSH too often can seriously degrade</font>
+00242 <font class="comment"> the compression.</font>
+00243 <font class="comment"></font>
+00244 <font class="comment"> If deflate returns with avail_out == 0, this function must be called again</font>
+00245 <font class="comment"> with the same value of the flush parameter and more output space (updated</font>
+00246 <font class="comment"> avail_out), until the flush is complete (deflate returns with non-zero</font>
+00247 <font class="comment"> avail_out).</font>
+00248 <font class="comment"></font>
+00249 <font class="comment"> If the parameter flush is set to Z_FINISH, pending input is processed,</font>
+00250 <font class="comment"> pending output is flushed and deflate returns with Z_STREAM_END if there</font>
+00251 <font class="comment"> was enough output space; if deflate returns with Z_OK, this function must be</font>
+00252 <font class="comment"> called again with Z_FINISH and more output space (updated avail_out) but no</font>
+00253 <font class="comment"> more input data, until it returns with Z_STREAM_END or an error. After</font>
+00254 <font class="comment"> deflate has returned Z_STREAM_END, the only possible operations on the</font>
+00255 <font class="comment"> stream are deflateReset or deflateEnd.</font>
+00256 <font class="comment"> </font>
+00257 <font class="comment"> Z_FINISH can be used immediately after deflateInit if all the compression</font>
+00258 <font class="comment"> is to be done in a single step. In this case, avail_out must be at least</font>
+00259 <font class="comment"> 0.1% larger than avail_in plus 12 bytes. If deflate does not return</font>
+00260 <font class="comment"> Z_STREAM_END, then it must be called again as described above.</font>
+00261 <font class="comment"></font>
+00262 <font class="comment"> deflate() sets strm-&gt;adler to the adler32 checksum of all input read</font>
+00263 <font class="comment"> so far (that is, total_in bytes).</font>
+00264 <font class="comment"></font>
+00265 <font class="comment"> deflate() may update data_type if it can make a good guess about</font>
+00266 <font class="comment"> the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered</font>
+00267 <font class="comment"> binary. This field is only for information purposes and does not affect</font>
+00268 <font class="comment"> the compression algorithm in any manner.</font>
+00269 <font class="comment"></font>
+00270 <font class="comment"> deflate() returns Z_OK if some progress has been made (more input</font>
+00271 <font class="comment"> processed or more output produced), Z_STREAM_END if all input has been</font>
+00272 <font class="comment"> consumed and all output has been produced (only when flush is set to</font>
+00273 <font class="comment"> Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example</font>
+00274 <font class="comment"> if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible</font>
+00275 <font class="comment"> (for example avail_in or avail_out was zero).</font>
+00276 <font class="comment">*/</font>
+00277
+00278
+00279 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateEnd OF((z_streamp strm));
+00280 <font class="comment">/*</font>
+00281 <font class="comment"> All dynamically allocated data structures for this stream are freed.</font>
+00282 <font class="comment"> This function discards any unprocessed input and does not flush any</font>
+00283 <font class="comment"> pending output.</font>
+00284 <font class="comment"></font>
+00285 <font class="comment"> deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the</font>
+00286 <font class="comment"> stream state was inconsistent, Z_DATA_ERROR if the stream was freed</font>
+00287 <font class="comment"> prematurely (some input or output was discarded). In the error case,</font>
+00288 <font class="comment"> msg may be set but then points to a static string (which must not be</font>
+00289 <font class="comment"> deallocated).</font>
+00290 <font class="comment">*/</font>
+00291
+00292
+00293 <font class="comment">/* </font>
+00294 <font class="comment">ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));</font>
+00295 <font class="comment"></font>
+00296 <font class="comment"> Initializes the internal stream state for decompression. The fields</font>
+00297 <font class="comment"> next_in, avail_in, zalloc, zfree and opaque must be initialized before by</font>
+00298 <font class="comment"> the caller. If next_in is not Z_NULL and avail_in is large enough (the exact</font>
+00299 <font class="comment"> value depends on the compression method), inflateInit determines the</font>
+00300 <font class="comment"> compression method from the zlib header and allocates all data structures</font>
+00301 <font class="comment"> accordingly; otherwise the allocation will be deferred to the first call of</font>
+00302 <font class="comment"> inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to</font>
+00303 <font class="comment"> use default allocation functions.</font>
+00304 <font class="comment"></font>
+00305 <font class="comment"> inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough</font>
+00306 <font class="comment"> memory, Z_VERSION_ERROR if the zlib library version is incompatible with the</font>
+00307 <font class="comment"> version assumed by the caller. msg is set to null if there is no error</font>
+00308 <font class="comment"> message. inflateInit does not perform any decompression apart from reading</font>
+00309 <font class="comment"> the zlib header if present: this will be done by inflate(). (So next_in and</font>
+00310 <font class="comment"> avail_in may be modified, but next_out and avail_out are unchanged.)</font>
+00311 <font class="comment">*/</font>
+00312
+00313
+00314 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflate OF((z_streamp strm, <font class="keywordtype">int</font> flush));
+00315 <font class="comment">/*</font>
+00316 <font class="comment"> inflate decompresses as much data as possible, and stops when the input</font>
+00317 <font class="comment"> buffer becomes empty or the output buffer becomes full. It may some</font>
+00318 <font class="comment"> introduce some output latency (reading input without producing any output)</font>
+00319 <font class="comment"> except when forced to flush.</font>
+00320 <font class="comment"></font>
+00321 <font class="comment"> The detailed semantics are as follows. inflate performs one or both of the</font>
+00322 <font class="comment"> following actions:</font>
+00323 <font class="comment"></font>
+00324 <font class="comment"> - Decompress more input starting at next_in and update next_in and avail_in</font>
+00325 <font class="comment"> accordingly. If not all input can be processed (because there is not</font>
+00326 <font class="comment"> enough room in the output buffer), next_in is updated and processing</font>
+00327 <font class="comment"> will resume at this point for the next call of inflate().</font>
+00328 <font class="comment"></font>
+00329 <font class="comment"> - Provide more output starting at next_out and update next_out and avail_out</font>
+00330 <font class="comment"> accordingly. inflate() provides as much output as possible, until there</font>
+00331 <font class="comment"> is no more input data or no more space in the output buffer (see below</font>
+00332 <font class="comment"> about the flush parameter).</font>
+00333 <font class="comment"></font>
+00334 <font class="comment"> Before the call of inflate(), the application should ensure that at least</font>
+00335 <font class="comment"> one of the actions is possible, by providing more input and/or consuming</font>
+00336 <font class="comment"> more output, and updating the next_* and avail_* values accordingly.</font>
+00337 <font class="comment"> The application can consume the uncompressed output when it wants, for</font>
+00338 <font class="comment"> example when the output buffer is full (avail_out == 0), or after each</font>
+00339 <font class="comment"> call of inflate(). If inflate returns Z_OK and with zero avail_out, it</font>
+00340 <font class="comment"> must be called again after making room in the output buffer because there</font>
+00341 <font class="comment"> might be more output pending.</font>
+00342 <font class="comment"></font>
+00343 <font class="comment"> If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much</font>
+00344 <font class="comment"> output as possible to the output buffer. The flushing behavior of inflate is</font>
+00345 <font class="comment"> not specified for values of the flush parameter other than Z_SYNC_FLUSH</font>
+00346 <font class="comment"> and Z_FINISH, but the current implementation actually flushes as much output</font>
+00347 <font class="comment"> as possible anyway.</font>
+00348 <font class="comment"></font>
+00349 <font class="comment"> inflate() should normally be called until it returns Z_STREAM_END or an</font>
+00350 <font class="comment"> error. However if all decompression is to be performed in a single step</font>
+00351 <font class="comment"> (a single call of inflate), the parameter flush should be set to</font>
+00352 <font class="comment"> Z_FINISH. In this case all pending input is processed and all pending</font>
+00353 <font class="comment"> output is flushed; avail_out must be large enough to hold all the</font>
+00354 <font class="comment"> uncompressed data. (The size of the uncompressed data may have been saved</font>
+00355 <font class="comment"> by the compressor for this purpose.) The next operation on this stream must</font>
+00356 <font class="comment"> be inflateEnd to deallocate the decompression state. The use of Z_FINISH</font>
+00357 <font class="comment"> is never required, but can be used to inform inflate that a faster routine</font>
+00358 <font class="comment"> may be used for the single inflate() call.</font>
+00359 <font class="comment"></font>
+00360 <font class="comment"> If a preset dictionary is needed at this point (see inflateSetDictionary</font>
+00361 <font class="comment"> below), inflate sets strm-adler to the adler32 checksum of the</font>
+00362 <font class="comment"> dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise </font>
+00363 <font class="comment"> it sets strm-&gt;adler to the adler32 checksum of all output produced</font>
+00364 <font class="comment"> so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or</font>
+00365 <font class="comment"> an error code as described below. At the end of the stream, inflate()</font>
+00366 <font class="comment"> checks that its computed adler32 checksum is equal to that saved by the</font>
+00367 <font class="comment"> compressor and returns Z_STREAM_END only if the checksum is correct.</font>
+00368 <font class="comment"></font>
+00369 <font class="comment"> inflate() returns Z_OK if some progress has been made (more input processed</font>
+00370 <font class="comment"> or more output produced), Z_STREAM_END if the end of the compressed data has</font>
+00371 <font class="comment"> been reached and all uncompressed output has been produced, Z_NEED_DICT if a</font>
+00372 <font class="comment"> preset dictionary is needed at this point, Z_DATA_ERROR if the input data was</font>
+00373 <font class="comment"> corrupted (input stream not conforming to the zlib format or incorrect</font>
+00374 <font class="comment"> adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent</font>
+00375 <font class="comment"> (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not</font>
+00376 <font class="comment"> enough memory, Z_BUF_ERROR if no progress is possible or if there was not</font>
+00377 <font class="comment"> enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR</font>
+00378 <font class="comment"> case, the application may then call inflateSync to look for a good</font>
+00379 <font class="comment"> compression block.</font>
+00380 <font class="comment">*/</font>
+00381
+00382
+00383 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateEnd OF((z_streamp strm));
+00384 <font class="comment">/*</font>
+00385 <font class="comment"> All dynamically allocated data structures for this stream are freed.</font>
+00386 <font class="comment"> This function discards any unprocessed input and does not flush any</font>
+00387 <font class="comment"> pending output.</font>
+00388 <font class="comment"></font>
+00389 <font class="comment"> inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state</font>
+00390 <font class="comment"> was inconsistent. In the error case, msg may be set but then points to a</font>
+00391 <font class="comment"> static string (which must not be deallocated).</font>
+00392 <font class="comment">*/</font>
+00393
+00394 <font class="comment">/* Advanced functions */</font>
+00395
+00396 <font class="comment">/*</font>
+00397 <font class="comment"> The following functions are needed only in some special applications.</font>
+00398 <font class="comment">*/</font>
+00399
+00400 <font class="comment">/* </font>
+00401 <font class="comment">ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,</font>
+00402 <font class="comment"> int level,</font>
+00403 <font class="comment"> int method,</font>
+00404 <font class="comment"> int windowBits,</font>
+00405 <font class="comment"> int memLevel,</font>
+00406 <font class="comment"> int strategy));</font>
+00407 <font class="comment"></font>
+00408 <font class="comment"> This is another version of deflateInit with more compression options. The</font>
+00409 <font class="comment"> fields next_in, zalloc, zfree and opaque must be initialized before by</font>
+00410 <font class="comment"> the caller.</font>
+00411 <font class="comment"></font>
+00412 <font class="comment"> The method parameter is the compression method. It must be Z_DEFLATED in</font>
+00413 <font class="comment"> this version of the library.</font>
+00414 <font class="comment"></font>
+00415 <font class="comment"> The windowBits parameter is the base two logarithm of the window size</font>
+00416 <font class="comment"> (the size of the history buffer). It should be in the range 8..15 for this</font>
+00417 <font class="comment"> version of the library. Larger values of this parameter result in better</font>
+00418 <font class="comment"> compression at the expense of memory usage. The default value is 15 if</font>
+00419 <font class="comment"> deflateInit is used instead.</font>
+00420 <font class="comment"></font>
+00421 <font class="comment"> The memLevel parameter specifies how much memory should be allocated</font>
+00422 <font class="comment"> for the internal compression state. memLevel=1 uses minimum memory but</font>
+00423 <font class="comment"> is slow and reduces compression ratio; memLevel=9 uses maximum memory</font>
+00424 <font class="comment"> for optimal speed. The default value is 8. See zconf.h for total memory</font>
+00425 <font class="comment"> usage as a function of windowBits and memLevel.</font>
+00426 <font class="comment"></font>
+00427 <font class="comment"> The strategy parameter is used to tune the compression algorithm. Use the</font>
+00428 <font class="comment"> value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a</font>
+00429 <font class="comment"> filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no</font>
+00430 <font class="comment"> string match). Filtered data consists mostly of small values with a</font>
+00431 <font class="comment"> somewhat random distribution. In this case, the compression algorithm is</font>
+00432 <font class="comment"> tuned to compress them better. The effect of Z_FILTERED is to force more</font>
+00433 <font class="comment"> Huffman coding and less string matching; it is somewhat intermediate</font>
+00434 <font class="comment"> between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects</font>
+00435 <font class="comment"> the compression ratio but not the correctness of the compressed output even</font>
+00436 <font class="comment"> if it is not set appropriately.</font>
+00437 <font class="comment"></font>
+00438 <font class="comment"> deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough</font>
+00439 <font class="comment"> memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid</font>
+00440 <font class="comment"> method). msg is set to null if there is no error message. deflateInit2 does</font>
+00441 <font class="comment"> not perform any compression: this will be done by deflate().</font>
+00442 <font class="comment">*/</font>
+00443
+00444 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateSetDictionary OF((z_streamp strm,
+00445 <font class="keyword">const</font> Bytef *dictionary,
+00446 uInt dictLength));
+00447 <font class="comment">/*</font>
+00448 <font class="comment"> Initializes the compression dictionary from the given byte sequence</font>
+00449 <font class="comment"> without producing any compressed output. This function must be called</font>
+00450 <font class="comment"> immediately after deflateInit, deflateInit2 or deflateReset, before any</font>
+00451 <font class="comment"> call of deflate. The compressor and decompressor must use exactly the same</font>
+00452 <font class="comment"> dictionary (see inflateSetDictionary).</font>
+00453 <font class="comment"></font>
+00454 <font class="comment"> The dictionary should consist of strings (byte sequences) that are likely</font>
+00455 <font class="comment"> to be encountered later in the data to be compressed, with the most commonly</font>
+00456 <font class="comment"> used strings preferably put towards the end of the dictionary. Using a</font>
+00457 <font class="comment"> dictionary is most useful when the data to be compressed is short and can be</font>
+00458 <font class="comment"> predicted with good accuracy; the data can then be compressed better than</font>
+00459 <font class="comment"> with the default empty dictionary.</font>
+00460 <font class="comment"></font>
+00461 <font class="comment"> Depending on the size of the compression data structures selected by</font>
+00462 <font class="comment"> deflateInit or deflateInit2, a part of the dictionary may in effect be</font>
+00463 <font class="comment"> discarded, for example if the dictionary is larger than the window size in</font>
+00464 <font class="comment"> deflate or deflate2. Thus the strings most likely to be useful should be</font>
+00465 <font class="comment"> put at the end of the dictionary, not at the front.</font>
+00466 <font class="comment"></font>
+00467 <font class="comment"> Upon return of this function, strm-&gt;adler is set to the Adler32 value</font>
+00468 <font class="comment"> of the dictionary; the decompressor may later use this value to determine</font>
+00469 <font class="comment"> which dictionary has been used by the compressor. (The Adler32 value</font>
+00470 <font class="comment"> applies to the whole dictionary even if only a subset of the dictionary is</font>
+00471 <font class="comment"> actually used by the compressor.)</font>
+00472 <font class="comment"></font>
+00473 <font class="comment"> deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a</font>
+00474 <font class="comment"> parameter is invalid (such as NULL dictionary) or the stream state is</font>
+00475 <font class="comment"> inconsistent (for example if deflate has already been called for this stream</font>
+00476 <font class="comment"> or if the compression method is bsort). deflateSetDictionary does not</font>
+00477 <font class="comment"> perform any compression: this will be done by deflate().</font>
+00478 <font class="comment">*/</font>
+00479
+00480 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateCopy OF((z_streamp dest,
+00481 z_streamp source));
+00482 <font class="comment">/*</font>
+00483 <font class="comment"> Sets the destination stream as a complete copy of the source stream.</font>
+00484 <font class="comment"></font>
+00485 <font class="comment"> This function can be useful when several compression strategies will be</font>
+00486 <font class="comment"> tried, for example when there are several ways of pre-processing the input</font>
+00487 <font class="comment"> data with a filter. The streams that will be discarded should then be freed</font>
+00488 <font class="comment"> by calling deflateEnd. Note that deflateCopy duplicates the internal</font>
+00489 <font class="comment"> compression state which can be quite large, so this strategy is slow and</font>
+00490 <font class="comment"> can consume lots of memory.</font>
+00491 <font class="comment"></font>
+00492 <font class="comment"> deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not</font>
+00493 <font class="comment"> enough memory, Z_STREAM_ERROR if the source stream state was inconsistent</font>
+00494 <font class="comment"> (such as zalloc being NULL). msg is left unchanged in both source and</font>
+00495 <font class="comment"> destination.</font>
+00496 <font class="comment">*/</font>
+00497
+00498 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateReset OF((z_streamp strm));
+00499 <font class="comment">/*</font>
+00500 <font class="comment"> This function is equivalent to deflateEnd followed by deflateInit,</font>
+00501 <font class="comment"> but does not free and reallocate all the internal compression state.</font>
+00502 <font class="comment"> The stream will keep the same compression level and any other attributes</font>
+00503 <font class="comment"> that may have been set by deflateInit2.</font>
+00504 <font class="comment"></font>
+00505 <font class="comment"> deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source</font>
+00506 <font class="comment"> stream state was inconsistent (such as zalloc or state being NULL).</font>
+00507 <font class="comment">*/</font>
+00508
+00509 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateParams OF((z_streamp strm,
+00510 <font class="keywordtype">int</font> level,
+00511 <font class="keywordtype">int</font> strategy));
+00512 <font class="comment">/*</font>
+00513 <font class="comment"> Dynamically update the compression level and compression strategy. The</font>
+00514 <font class="comment"> interpretation of level and strategy is as in deflateInit2. This can be</font>
+00515 <font class="comment"> used to switch between compression and straight copy of the input data, or</font>
+00516 <font class="comment"> to switch to a different kind of input data requiring a different</font>
+00517 <font class="comment"> strategy. If the compression level is changed, the input available so far</font>
+00518 <font class="comment"> is compressed with the old level (and may be flushed); the new level will</font>
+00519 <font class="comment"> take effect only at the next call of deflate().</font>
+00520 <font class="comment"></font>
+00521 <font class="comment"> Before the call of deflateParams, the stream state must be set as for</font>
+00522 <font class="comment"> a call of deflate(), since the currently available input may have to</font>
+00523 <font class="comment"> be compressed and flushed. In particular, strm-&gt;avail_out must be non-zero.</font>
+00524 <font class="comment"></font>
+00525 <font class="comment"> deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source</font>
+00526 <font class="comment"> stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR</font>
+00527 <font class="comment"> if strm-&gt;avail_out was zero.</font>
+00528 <font class="comment">*/</font>
+00529
+00530 <font class="comment">/* </font>
+00531 <font class="comment">ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,</font>
+00532 <font class="comment"> int windowBits));</font>
+00533 <font class="comment"></font>
+00534 <font class="comment"> This is another version of inflateInit with an extra parameter. The</font>
+00535 <font class="comment"> fields next_in, avail_in, zalloc, zfree and opaque must be initialized</font>
+00536 <font class="comment"> before by the caller.</font>
+00537 <font class="comment"></font>
+00538 <font class="comment"> The windowBits parameter is the base two logarithm of the maximum window</font>
+00539 <font class="comment"> size (the size of the history buffer). It should be in the range 8..15 for</font>
+00540 <font class="comment"> this version of the library. The default value is 15 if inflateInit is used</font>
+00541 <font class="comment"> instead. If a compressed stream with a larger window size is given as</font>
+00542 <font class="comment"> input, inflate() will return with the error code Z_DATA_ERROR instead of</font>
+00543 <font class="comment"> trying to allocate a larger window.</font>
+00544 <font class="comment"></font>
+00545 <font class="comment"> inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough</font>
+00546 <font class="comment"> memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative</font>
+00547 <font class="comment"> memLevel). msg is set to null if there is no error message. inflateInit2</font>
+00548 <font class="comment"> does not perform any decompression apart from reading the zlib header if</font>
+00549 <font class="comment"> present: this will be done by inflate(). (So next_in and avail_in may be</font>
+00550 <font class="comment"> modified, but next_out and avail_out are unchanged.)</font>
+00551 <font class="comment">*/</font>
+00552
+00553 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateSetDictionary OF((z_streamp strm,
+00554 <font class="keyword">const</font> Bytef *dictionary,
+00555 uInt dictLength));
+00556 <font class="comment">/*</font>
+00557 <font class="comment"> Initializes the decompression dictionary from the given uncompressed byte</font>
+00558 <font class="comment"> sequence. This function must be called immediately after a call of inflate</font>
+00559 <font class="comment"> if this call returned Z_NEED_DICT. The dictionary chosen by the compressor</font>
+00560 <font class="comment"> can be determined from the Adler32 value returned by this call of</font>
+00561 <font class="comment"> inflate. The compressor and decompressor must use exactly the same</font>
+00562 <font class="comment"> dictionary (see deflateSetDictionary).</font>
+00563 <font class="comment"></font>
+00564 <font class="comment"> inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a</font>
+00565 <font class="comment"> parameter is invalid (such as NULL dictionary) or the stream state is</font>
+00566 <font class="comment"> inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the</font>
+00567 <font class="comment"> expected one (incorrect Adler32 value). inflateSetDictionary does not</font>
+00568 <font class="comment"> perform any decompression: this will be done by subsequent calls of</font>
+00569 <font class="comment"> inflate().</font>
+00570 <font class="comment">*/</font>
+00571
+00572 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateSync OF((z_streamp strm));
+00573 <font class="comment">/* </font>
+00574 <font class="comment"> Skips invalid compressed data until a full flush point (see above the</font>
+00575 <font class="comment"> description of deflate with Z_FULL_FLUSH) can be found, or until all</font>
+00576 <font class="comment"> available input is skipped. No output is provided.</font>
+00577 <font class="comment"></font>
+00578 <font class="comment"> inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR</font>
+00579 <font class="comment"> if no more input was provided, Z_DATA_ERROR if no flush point has been found,</font>
+00580 <font class="comment"> or Z_STREAM_ERROR if the stream structure was inconsistent. In the success</font>
+00581 <font class="comment"> case, the application may save the current current value of total_in which</font>
+00582 <font class="comment"> indicates where valid compressed data was found. In the error case, the</font>
+00583 <font class="comment"> application may repeatedly call inflateSync, providing more input each time,</font>
+00584 <font class="comment"> until success or end of the input data.</font>
+00585 <font class="comment">*/</font>
+00586
+00587 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateReset OF((z_streamp strm));
+00588 <font class="comment">/*</font>
+00589 <font class="comment"> This function is equivalent to inflateEnd followed by inflateInit,</font>
+00590 <font class="comment"> but does not free and reallocate all the internal decompression state.</font>
+00591 <font class="comment"> The stream will keep attributes that may have been set by inflateInit2.</font>
+00592 <font class="comment"></font>
+00593 <font class="comment"> inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source</font>
+00594 <font class="comment"> stream state was inconsistent (such as zalloc or state being NULL).</font>
+00595 <font class="comment">*/</font>
+00596
+00597
+00598 <font class="comment">/* utility functions */</font>
+00599
+00600 <font class="comment">/*</font>
+00601 <font class="comment"> The following utility functions are implemented on top of the</font>
+00602 <font class="comment"> basic stream-oriented functions. To simplify the interface, some</font>
+00603 <font class="comment"> default options are assumed (compression level and memory usage,</font>
+00604 <font class="comment"> standard memory allocation functions). The source code of these</font>
+00605 <font class="comment"> utility functions can easily be modified if you need special options.</font>
+00606 <font class="comment">*/</font>
+00607
+00608 ZEXTERN <font class="keywordtype">int</font> ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
+00609 <font class="keyword">const</font> Bytef *source, uLong sourceLen));
+00610 <font class="comment">/*</font>
+00611 <font class="comment"> Compresses the source buffer into the destination buffer. sourceLen is</font>
+00612 <font class="comment"> the byte length of the source buffer. Upon entry, destLen is the total</font>
+00613 <font class="comment"> size of the destination buffer, which must be at least 0.1% larger than</font>
+00614 <font class="comment"> sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the</font>
+00615 <font class="comment"> compressed buffer.</font>
+00616 <font class="comment"> This function can be used to compress a whole file at once if the</font>
+00617 <font class="comment"> input file is mmap'ed.</font>
+00618 <font class="comment"> compress returns Z_OK if success, Z_MEM_ERROR if there was not</font>
+00619 <font class="comment"> enough memory, Z_BUF_ERROR if there was not enough room in the output</font>
+00620 <font class="comment"> buffer.</font>
+00621 <font class="comment">*/</font>
+00622
+00623 ZEXTERN <font class="keywordtype">int</font> ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
+00624 <font class="keyword">const</font> Bytef *source, uLong sourceLen,
+00625 <font class="keywordtype">int</font> level));
+00626 <font class="comment">/*</font>
+00627 <font class="comment"> Compresses the source buffer into the destination buffer. The level</font>
+00628 <font class="comment"> parameter has the same meaning as in deflateInit. sourceLen is the byte</font>
+00629 <font class="comment"> length of the source buffer. Upon entry, destLen is the total size of the</font>
+00630 <font class="comment"> destination buffer, which must be at least 0.1% larger than sourceLen plus</font>
+00631 <font class="comment"> 12 bytes. Upon exit, destLen is the actual size of the compressed buffer.</font>
+00632 <font class="comment"></font>
+00633 <font class="comment"> compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough</font>
+00634 <font class="comment"> memory, Z_BUF_ERROR if there was not enough room in the output buffer,</font>
+00635 <font class="comment"> Z_STREAM_ERROR if the level parameter is invalid.</font>
+00636 <font class="comment">*/</font>
+00637
+00638 ZEXTERN <font class="keywordtype">int</font> ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
+00639 <font class="keyword">const</font> Bytef *source, uLong sourceLen));
+00640 <font class="comment">/*</font>
+00641 <font class="comment"> Decompresses the source buffer into the destination buffer. sourceLen is</font>
+00642 <font class="comment"> the byte length of the source buffer. Upon entry, destLen is the total</font>
+00643 <font class="comment"> size of the destination buffer, which must be large enough to hold the</font>
+00644 <font class="comment"> entire uncompressed data. (The size of the uncompressed data must have</font>
+00645 <font class="comment"> been saved previously by the compressor and transmitted to the decompressor</font>
+00646 <font class="comment"> by some mechanism outside the scope of this compression library.)</font>
+00647 <font class="comment"> Upon exit, destLen is the actual size of the compressed buffer.</font>
+00648 <font class="comment"> This function can be used to decompress a whole file at once if the</font>
+00649 <font class="comment"> input file is mmap'ed.</font>
+00650 <font class="comment"></font>
+00651 <font class="comment"> uncompress returns Z_OK if success, Z_MEM_ERROR if there was not</font>
+00652 <font class="comment"> enough memory, Z_BUF_ERROR if there was not enough room in the output</font>
+00653 <font class="comment"> buffer, or Z_DATA_ERROR if the input data was corrupted.</font>
+00654 <font class="comment">*/</font>
+00655
+00656
+00657 <font class="keyword">typedef</font> voidp gzFile;
+00658
+00659 ZEXTERN gzFile ZEXPORT gzopen OF((<font class="keyword">const</font> <font class="keywordtype">char</font> *path, <font class="keyword">const</font> <font class="keywordtype">char</font> *mode));
+00660 <font class="comment">/*</font>
+00661 <font class="comment"> Opens a gzip (.gz) file for reading or writing. The mode parameter</font>
+00662 <font class="comment"> is as in fopen ("rb" or "wb") but can also include a compression level</font>
+00663 <font class="comment"> ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for</font>
+00664 <font class="comment"> Huffman only compression as in "wb1h". (See the description</font>
+00665 <font class="comment"> of deflateInit2 for more information about the strategy parameter.)</font>
+00666 <font class="comment"></font>
+00667 <font class="comment"> gzopen can be used to read a file which is not in gzip format; in this</font>
+00668 <font class="comment"> case gzread will directly read from the file without decompression.</font>
+00669 <font class="comment"></font>
+00670 <font class="comment"> gzopen returns NULL if the file could not be opened or if there was</font>
+00671 <font class="comment"> insufficient memory to allocate the (de)compression state; errno</font>
+00672 <font class="comment"> can be checked to distinguish the two cases (if errno is zero, the</font>
+00673 <font class="comment"> zlib error is Z_MEM_ERROR). */</font>
+00674
+00675 ZEXTERN gzFile ZEXPORT gzdopen OF((<font class="keywordtype">int</font> fd, <font class="keyword">const</font> <font class="keywordtype">char</font> *mode));
+00676 <font class="comment">/*</font>
+00677 <font class="comment"> gzdopen() associates a gzFile with the file descriptor fd. File</font>
+00678 <font class="comment"> descriptors are obtained from calls like open, dup, creat, pipe or</font>
+00679 <font class="comment"> fileno (in the file has been previously opened with fopen).</font>
+00680 <font class="comment"> The mode parameter is as in gzopen.</font>
+00681 <font class="comment"> The next call of gzclose on the returned gzFile will also close the</font>
+00682 <font class="comment"> file descriptor fd, just like fclose(fdopen(fd), mode) closes the file</font>
+00683 <font class="comment"> descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).</font>
+00684 <font class="comment"> gzdopen returns NULL if there was insufficient memory to allocate</font>
+00685 <font class="comment"> the (de)compression state.</font>
+00686 <font class="comment">*/</font>
+00687
+00688 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzsetparams OF((gzFile file, <font class="keywordtype">int</font> level, <font class="keywordtype">int</font> strategy));
+00689 <font class="comment">/*</font>
+00690 <font class="comment"> Dynamically update the compression level or strategy. See the description</font>
+00691 <font class="comment"> of deflateInit2 for the meaning of these parameters.</font>
+00692 <font class="comment"> gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not</font>
+00693 <font class="comment"> opened for writing.</font>
+00694 <font class="comment">*/</font>
+00695
+00696 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzread OF((gzFile file, voidp buf, <font class="keywordtype">unsigned</font> len));
+00697 <font class="comment">/*</font>
+00698 <font class="comment"> Reads the given number of uncompressed bytes from the compressed file.</font>
+00699 <font class="comment"> If the input file was not in gzip format, gzread copies the given number</font>
+00700 <font class="comment"> of bytes into the buffer.</font>
+00701 <font class="comment"> gzread returns the number of uncompressed bytes actually read (0 for</font>
+00702 <font class="comment"> end of file, -1 for error). */</font>
+00703
+00704 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzwrite OF((gzFile file,
+00705 <font class="keyword">const</font> voidp buf, <font class="keywordtype">unsigned</font> len));
+00706 <font class="comment">/*</font>
+00707 <font class="comment"> Writes the given number of uncompressed bytes into the compressed file.</font>
+00708 <font class="comment"> gzwrite returns the number of uncompressed bytes actually written</font>
+00709 <font class="comment"> (0 in case of error).</font>
+00710 <font class="comment">*/</font>
+00711
+00712 ZEXTERN <font class="keywordtype">int</font> ZEXPORTVA gzprintf OF((gzFile file, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...));
+00713 <font class="comment">/*</font>
+00714 <font class="comment"> Converts, formats, and writes the args to the compressed file under</font>
+00715 <font class="comment"> control of the format string, as in fprintf. gzprintf returns the number of</font>
+00716 <font class="comment"> uncompressed bytes actually written (0 in case of error).</font>
+00717 <font class="comment">*/</font>
+00718
+00719 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzputs OF((gzFile file, <font class="keyword">const</font> <font class="keywordtype">char</font> *s));
+00720 <font class="comment">/*</font>
+00721 <font class="comment"> Writes the given null-terminated string to the compressed file, excluding</font>
+00722 <font class="comment"> the terminating null character.</font>
+00723 <font class="comment"> gzputs returns the number of characters written, or -1 in case of error.</font>
+00724 <font class="comment">*/</font>
+00725
+00726 ZEXTERN <font class="keywordtype">char</font> * ZEXPORT gzgets OF((gzFile file, <font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len));
+00727 <font class="comment">/*</font>
+00728 <font class="comment"> Reads bytes from the compressed file until len-1 characters are read, or</font>
+00729 <font class="comment"> a newline character is read and transferred to buf, or an end-of-file</font>
+00730 <font class="comment"> condition is encountered. The string is then terminated with a null</font>
+00731 <font class="comment"> character.</font>
+00732 <font class="comment"> gzgets returns buf, or Z_NULL in case of error.</font>
+00733 <font class="comment">*/</font>
+00734
+00735 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzputc OF((gzFile file, <font class="keywordtype">int</font> c));
+00736 <font class="comment">/*</font>
+00737 <font class="comment"> Writes c, converted to an unsigned char, into the compressed file.</font>
+00738 <font class="comment"> gzputc returns the value that was written, or -1 in case of error.</font>
+00739 <font class="comment">*/</font>
+00740
+00741 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzgetc OF((gzFile file));
+00742 <font class="comment">/*</font>
+00743 <font class="comment"> Reads one byte from the compressed file. gzgetc returns this byte</font>
+00744 <font class="comment"> or -1 in case of end of file or error.</font>
+00745 <font class="comment">*/</font>
+00746
+00747 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzflush OF((gzFile file, <font class="keywordtype">int</font> flush));
+00748 <font class="comment">/*</font>
+00749 <font class="comment"> Flushes all pending output into the compressed file. The parameter</font>
+00750 <font class="comment"> flush is as in the deflate() function. The return value is the zlib</font>
+00751 <font class="comment"> error number (see function gzerror below). gzflush returns Z_OK if</font>
+00752 <font class="comment"> the flush parameter is Z_FINISH and all output could be flushed.</font>
+00753 <font class="comment"> gzflush should be called only when strictly necessary because it can</font>
+00754 <font class="comment"> degrade compression.</font>
+00755 <font class="comment">*/</font>
+00756
+00757 ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+00758 z_off_t offset, <font class="keywordtype">int</font> whence));
+00759 <font class="comment">/* </font>
+00760 <font class="comment"> Sets the starting position for the next gzread or gzwrite on the</font>
+00761 <font class="comment"> given compressed file. The offset represents a number of bytes in the</font>
+00762 <font class="comment"> uncompressed data stream. The whence parameter is defined as in lseek(2);</font>
+00763 <font class="comment"> the value SEEK_END is not supported.</font>
+00764 <font class="comment"> If the file is opened for reading, this function is emulated but can be</font>
+00765 <font class="comment"> extremely slow. If the file is opened for writing, only forward seeks are</font>
+00766 <font class="comment"> supported; gzseek then compresses a sequence of zeroes up to the new</font>
+00767 <font class="comment"> starting position.</font>
+00768 <font class="comment"></font>
+00769 <font class="comment"> gzseek returns the resulting offset location as measured in bytes from</font>
+00770 <font class="comment"> the beginning of the uncompressed stream, or -1 in case of error, in</font>
+00771 <font class="comment"> particular if the file is opened for writing and the new starting position</font>
+00772 <font class="comment"> would be before the current position.</font>
+00773 <font class="comment">*/</font>
+00774
+00775 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzrewind OF((gzFile file));
+00776 <font class="comment">/*</font>
+00777 <font class="comment"> Rewinds the given file. This function is supported only for reading.</font>
+00778 <font class="comment"></font>
+00779 <font class="comment"> gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)</font>
+00780 <font class="comment">*/</font>
+00781
+00782 ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
+00783 <font class="comment">/*</font>
+00784 <font class="comment"> Returns the starting position for the next gzread or gzwrite on the</font>
+00785 <font class="comment"> given compressed file. This position represents a number of bytes in the</font>
+00786 <font class="comment"> uncompressed data stream.</font>
+00787 <font class="comment"></font>
+00788 <font class="comment"> gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)</font>
+00789 <font class="comment">*/</font>
+00790
+00791 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzeof OF((gzFile file));
+00792 <font class="comment">/*</font>
+00793 <font class="comment"> Returns 1 when EOF has previously been detected reading the given</font>
+00794 <font class="comment"> input stream, otherwise zero.</font>
+00795 <font class="comment">*/</font>
+00796
+00797 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzclose OF((gzFile file));
+00798 <font class="comment">/*</font>
+00799 <font class="comment"> Flushes all pending output if necessary, closes the compressed file</font>
+00800 <font class="comment"> and deallocates all the (de)compression state. The return value is the zlib</font>
+00801 <font class="comment"> error number (see function gzerror below).</font>
+00802 <font class="comment">*/</font>
+00803
+00804 ZEXTERN <font class="keyword">const</font> <font class="keywordtype">char</font> * ZEXPORT gzerror OF((gzFile file, <font class="keywordtype">int</font> *errnum));
+00805 <font class="comment">/*</font>
+00806 <font class="comment"> Returns the error message for the last error which occurred on the</font>
+00807 <font class="comment"> given compressed file. errnum is set to zlib error number. If an</font>
+00808 <font class="comment"> error occurred in the file system and not in the compression library,</font>
+00809 <font class="comment"> errnum is set to Z_ERRNO and the application may consult errno</font>
+00810 <font class="comment"> to get the exact error code.</font>
+00811 <font class="comment">*/</font>
+00812
+00813 <font class="comment">/* checksum functions */</font>
+00814
+00815 <font class="comment">/*</font>
+00816 <font class="comment"> These functions are not related to compression but are exported</font>
+00817 <font class="comment"> anyway because they might be useful in applications using the</font>
+00818 <font class="comment"> compression library.</font>
+00819 <font class="comment">*/</font>
+00820
+00821 ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, <font class="keyword">const</font> Bytef *buf, uInt len));
+00822
+00823 <font class="comment">/*</font>
+00824 <font class="comment"> Update a running Adler-32 checksum with the bytes buf[0..len-1] and</font>
+00825 <font class="comment"> return the updated checksum. If buf is NULL, this function returns</font>
+00826 <font class="comment"> the required initial value for the checksum.</font>
+00827 <font class="comment"> An Adler-32 checksum is almost as reliable as a CRC32 but can be computed</font>
+00828 <font class="comment"> much faster. Usage example:</font>
+00829 <font class="comment"></font>
+00830 <font class="comment"> uLong adler = adler32(0L, Z_NULL, 0);</font>
+00831 <font class="comment"></font>
+00832 <font class="comment"> while (read_buffer(buffer, length) != EOF) {</font>
+00833 <font class="comment"> adler = adler32(adler, buffer, length);</font>
+00834 <font class="comment"> }</font>
+00835 <font class="comment"> if (adler != original_adler) error();</font>
+00836 <font class="comment">*/</font>
+00837
+00838 ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, <font class="keyword">const</font> Bytef *buf, uInt len));
+00839 <font class="comment">/*</font>
+00840 <font class="comment"> Update a running crc with the bytes buf[0..len-1] and return the updated</font>
+00841 <font class="comment"> crc. If buf is NULL, this function returns the required initial value</font>
+00842 <font class="comment"> for the crc. Pre- and post-conditioning (one's complement) is performed</font>
+00843 <font class="comment"> within this function so it shouldn't be done by the application.</font>
+00844 <font class="comment"> Usage example:</font>
+00845 <font class="comment"></font>
+00846 <font class="comment"> uLong crc = crc32(0L, Z_NULL, 0);</font>
+00847 <font class="comment"></font>
+00848 <font class="comment"> while (read_buffer(buffer, length) != EOF) {</font>
+00849 <font class="comment"> crc = crc32(crc, buffer, length);</font>
+00850 <font class="comment"> }</font>
+00851 <font class="comment"> if (crc != original_crc) error();</font>
+00852 <font class="comment">*/</font>
+00853
+00854
+00855 <font class="comment">/* various hacks, don't look :) */</font>
+00856
+00857 <font class="comment">/* deflateInit and inflateInit are macros to allow checking the zlib version</font>
+00858 <font class="comment"> * and the compiler's view of z_stream:</font>
+00859 <font class="comment"> */</font>
+00860 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateInit_ OF((z_streamp strm, <font class="keywordtype">int</font> level,
+00861 <font class="keyword">const</font> <font class="keywordtype">char</font> *version, <font class="keywordtype">int</font> stream_size));
+00862 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateInit_ OF((z_streamp strm,
+00863 <font class="keyword">const</font> <font class="keywordtype">char</font> *version, <font class="keywordtype">int</font> stream_size));
+00864 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateInit2_ OF((z_streamp strm, <font class="keywordtype">int</font> level, <font class="keywordtype">int</font> method,
+00865 <font class="keywordtype">int</font> windowBits, <font class="keywordtype">int</font> memLevel,
+00866 <font class="keywordtype">int</font> strategy, <font class="keyword">const</font> <font class="keywordtype">char</font> *version,
+00867 <font class="keywordtype">int</font> stream_size));
+00868 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateInit2_ OF((z_streamp strm, <font class="keywordtype">int</font> windowBits,
+00869 <font class="keyword">const</font> <font class="keywordtype">char</font> *version, <font class="keywordtype">int</font> stream_size));
+00870 <font class="preprocessor">#define deflateInit(strm, level) \</font>
+00871 <font class="preprocessor"> deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))</font>
+00872 <font class="preprocessor"></font><font class="preprocessor">#define inflateInit(strm) \</font>
+00873 <font class="preprocessor"> inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))</font>
+00874 <font class="preprocessor"></font><font class="preprocessor">#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \</font>
+00875 <font class="preprocessor"> deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\</font>
+00876 <font class="preprocessor"> (strategy), ZLIB_VERSION, sizeof(z_stream))</font>
+00877 <font class="preprocessor"></font><font class="preprocessor">#define inflateInit2(strm, windowBits) \</font>
+00878 <font class="preprocessor"> inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))</font>
+00879 <font class="preprocessor"></font>
+00880
+00881 <font class="preprocessor">#if !defined(_Z_UTIL_H) &amp;&amp; !defined(NO_DUMMY_DECL)</font>
+00882 <font class="preprocessor"></font> <font class="keyword">struct </font>internal_state {<font class="keywordtype">int</font> dummy;}; <font class="comment">/* hack for buggy compilers */</font>
+00883 <font class="preprocessor">#endif</font>
+00884 <font class="preprocessor"></font>
+00885 ZEXTERN <font class="keyword">const</font> <font class="keywordtype">char</font> * ZEXPORT zError OF((<font class="keywordtype">int</font> err));
+00886 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateSyncPoint OF((z_streamp z));
+00887 ZEXTERN <font class="keyword">const</font> uLongf * ZEXPORT get_crc_table OF((<font class="keywordtype">void</font>));
+00888
+00889 <font class="preprocessor">#ifdef __cplusplus</font>
+00890 <font class="preprocessor"></font>}
+00891 <font class="preprocessor">#endif</font>
+00892 <font class="preprocessor"></font>
+00893 <font class="preprocessor">#endif </font><font class="comment">/* _ZLIB_H */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zstr_8cpp-source.html b/doc/api-documentation/html/zstr_8cpp-source.html
new file mode 100644
index 0000000..6366986
--- /dev/null
+++ b/doc/api-documentation/html/zstr_8cpp-source.html
@@ -0,0 +1,719 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zstr.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zstr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * zstr.cpp - code for class 'zStr'- a module that reads compressed text</font>
+00003 <font class="comment"> * files and provides lookup and parsing functions based on</font>
+00004 <font class="comment"> * class StrKey</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00020 <font class="preprocessor">#include &lt;zstr.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00022
+00023 <font class="preprocessor">#include &lt;sysdata.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;entriesblk.h&gt;</font>
+00025
+00026 <font class="comment">/******************************************************************************</font>
+00027 <font class="comment"> * zStr Statics</font>
+00028 <font class="comment"> */</font>
+00029
+00030 <font class="keywordtype">int</font> zStr::instance = 0;
+00031 <font class="keyword">const</font> <font class="keywordtype">int</font> zStr::IDXENTRYSIZE = 8;
+00032 <font class="keyword">const</font> <font class="keywordtype">int</font> zStr::ZDXENTRYSIZE = 8;
+00033
+00034
+00035 <font class="comment">/******************************************************************************</font>
+00036 <font class="comment"> * zStr Constructor - Initializes data for instance of zStr</font>
+00037 <font class="comment"> *</font>
+00038 <font class="comment"> * ENT: ipath - path of the directory where data and index files are located.</font>
+00039 <font class="comment"> */</font>
+00040
+00041 zStr::zStr(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode, <font class="keywordtype">long</font> blockCount, SWCompress *icomp) {
+00042 <font class="keywordtype">char</font> buf[127];
+00043
+00044 nl = <font class="charliteral">'\n'</font>;
+00045 lastoff = -1;
+00046 path = 0;
+00047 stdstr(&amp;path, ipath);
+00048
+00049 compressor = (icomp) ? icomp : <font class="keyword">new</font> SWCompress();
+00050 this-&gt;blockCount = blockCount;
+00051 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00052 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00053 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00054 <font class="preprocessor"></font>
+00055 <font class="keywordflow">if</font> (fileMode == -1) { <font class="comment">// try read/write if possible</font>
+00056 fileMode = O_RDWR;
+00057 }
+00058
+00059 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00060 idxfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00061
+00062 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00063 datfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00064
+00065 sprintf(buf, <font class="stringliteral">"%s.zdx"</font>, path);
+00066 zdxfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00067
+00068 sprintf(buf, <font class="stringliteral">"%s.zdt"</font>, path);
+00069 zdtfd = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00070
+00071 <font class="keywordflow">if</font> (datfd &lt;= 0) {
+00072 sprintf(buf, <font class="stringliteral">"Error: %d"</font>, errno);
+00073 perror(buf);
+00074 }
+00075
+00076 cacheBlock = 0;
+00077 cacheBlockIndex = -1;
+00078 cacheDirty = <font class="keyword">false</font>;
+00079
+00080 <a class="code" href="class_verse_key.html#r3">instance</a>++;
+00081 }
+00082
+00083
+00084 <font class="comment">/******************************************************************************</font>
+00085 <font class="comment"> * zStr Destructor - Cleans up instance of zStr</font>
+00086 <font class="comment"> */</font>
+00087
+00088 zStr::~zStr() {
+00089
+00090 flushCache();
+00091
+00092 <font class="keywordflow">if</font> (path)
+00093 <font class="keyword">delete</font> [] path;
+00094
+00095 --<a class="code" href="class_verse_key.html#r3">instance</a>;
+00096
+00097 FileMgr::systemFileMgr.close(idxfd);
+00098 FileMgr::systemFileMgr.close(datfd);
+00099 FileMgr::systemFileMgr.close(zdxfd);
+00100 FileMgr::systemFileMgr.close(zdtfd);
+00101
+00102
+00103 <font class="keywordflow">if</font> (compressor)
+00104 <font class="keyword">delete</font> compressor;
+00105
+00106 }
+00107
+00108
+00109 <font class="comment">/******************************************************************************</font>
+00110 <font class="comment"> * zStr::getidxbufdat - Gets the index string at the given dat offset</font>
+00111 <font class="comment"> * NOTE: buf is calloc'd, or if not null, realloc'd and must</font>
+00112 <font class="comment"> * be free'd by calling function</font>
+00113 <font class="comment"> *</font>
+00114 <font class="comment"> * ENT: ioffset - offset in dat file to lookup</font>
+00115 <font class="comment"> * buf - address of pointer to allocate for storage of string</font>
+00116 <font class="comment"> */</font>
+00117
+00118 <font class="keywordtype">void</font> zStr::getKeyFromDatOffset(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf) {
+00119 <font class="keywordtype">int</font> size;
+00120 <font class="keywordtype">char</font> ch;
+00121 <font class="keywordflow">if</font> (datfd &gt; 0) {
+00122 lseek(datfd-&gt;getFd(), ioffset, SEEK_SET);
+00123 <font class="keywordflow">for</font> (size = 0; read(datfd-&gt;getFd(), &amp;ch, 1) == 1; size++) {
+00124 <font class="keywordflow">if</font> ((ch == <font class="charliteral">'\\'</font>) || (ch == 10) || (ch == 13))
+00125 <font class="keywordflow">break</font>;
+00126 }
+00127 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, size + 1) : (char *)malloc(size + 1);
+00128 <font class="keywordflow">if</font> (size) {
+00129 lseek(datfd-&gt;getFd(), ioffset, SEEK_SET);
+00130 read(datfd-&gt;getFd(), *buf, size);
+00131 }
+00132 (*buf)[size] = 0;
+00133 <font class="keywordflow">for</font> (size--; size &gt; 0; size--)
+00134 (*buf)[size] = SW_toupper((*buf)[size]);
+00135 }
+00136 <font class="keywordflow">else</font> {
+00137 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, 1) : (char *)malloc(1);
+00138 **buf = 0;
+00139 }
+00140 }
+00141
+00142
+00143 <font class="comment">/******************************************************************************</font>
+00144 <font class="comment"> * zStr::getidxbuf - Gets the index string at the given idx offset</font>
+00145 <font class="comment"> * NOTE: buf is calloc'd, or if not null, realloc'd</font>
+00146 <font class="comment"> * and must be freed by calling function</font>
+00147 <font class="comment"> *</font>
+00148 <font class="comment"> * ENT: ioffset - offset in idx file to lookup</font>
+00149 <font class="comment"> * buf - address of pointer to allocate for storage of string</font>
+00150 <font class="comment"> */</font>
+00151
+00152 <font class="keywordtype">void</font> zStr::getKeyFromIdxOffset(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf) {
+00153 __u32 offset;
+00154
+00155 <font class="keywordflow">if</font> (idxfd &gt; 0) {
+00156 lseek(idxfd-&gt;getFd(), ioffset, SEEK_SET);
+00157 read(idxfd-&gt;getFd(), &amp;offset, <font class="keyword">sizeof</font>(__u32));
+00158 offset = swordtoarch32(offset);
+00159 getKeyFromDatOffset(offset, buf);
+00160 }
+00161 }
+00162
+00163
+00164 <font class="comment">/******************************************************************************</font>
+00165 <font class="comment"> * zStr::findoffset - Finds the offset of the key string from the indexes</font>
+00166 <font class="comment"> *</font>
+00167 <font class="comment"> * ENT: key - key string to lookup</font>
+00168 <font class="comment"> * offset - address to store the starting offset</font>
+00169 <font class="comment"> * size - address to store the size of the entry</font>
+00170 <font class="comment"> * away - number of entries before of after to jump</font>
+00171 <font class="comment"> * (default = 0)</font>
+00172 <font class="comment"> *</font>
+00173 <font class="comment"> * RET: error status</font>
+00174 <font class="comment"> */</font>
+00175
+00176 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> zStr::findKeyIndex(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keywordtype">long</font> *idxoff, <font class="keywordtype">long</font> away) {
+00177 <font class="keywordtype">char</font> *trybuf = 0, *key = 0, quitflag = 0;
+00178 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> retval = 0;
+00179 __s32 headoff, tailoff, tryoff = 0, maxoff = 0;
+00180 __u32 start, size;
+00181
+00182 <font class="keywordflow">if</font> (idxfd-&gt;getFd() &gt;= 0) {
+00183 tailoff = maxoff = lseek(idxfd-&gt;getFd(), 0, SEEK_END) - IDXENTRYSIZE;
+00184 <font class="keywordflow">if</font> (*ikey) {
+00185 headoff = 0;
+00186 stdstr(&amp;key, ikey);
+00187 toupperstr(key);
+00188
+00189 <font class="keywordflow">while</font> (headoff &lt; tailoff) {
+00190 tryoff = (lastoff == -1) ? headoff + (((((tailoff / IDXENTRYSIZE) - (headoff / IDXENTRYSIZE))) / 2) * IDXENTRYSIZE) : lastoff;
+00191 lastoff = -1;
+00192
+00193 getKeyFromIdxOffset(tryoff, &amp;trybuf);
+00194
+00195 <font class="keywordflow">if</font> (!*trybuf &amp;&amp; tryoff) { <font class="comment">// In case of extra entry at end of idx (not first entry)</font>
+00196 tryoff += (tryoff &gt; (maxoff / 2))?-IDXENTRYSIZE:IDXENTRYSIZE;
+00197 retval = -1;
+00198 <font class="keywordflow">break</font>;
+00199 }
+00200
+00201 <font class="keywordtype">int</font> diff = strcmp(key, trybuf);
+00202 <font class="keywordflow">if</font> (!diff)
+00203 <font class="keywordflow">break</font>;
+00204
+00205 <font class="keywordflow">if</font> (diff &lt; 0)
+00206 tailoff = (tryoff == headoff) ? headoff : tryoff;
+00207 <font class="keywordflow">else</font> headoff = tryoff;
+00208 <font class="keywordflow">if</font> (tailoff == headoff + IDXENTRYSIZE) {
+00209 <font class="keywordflow">if</font> (quitflag++)
+00210 headoff = tailoff;
+00211 }
+00212 }
+00213 <font class="keywordflow">if</font> (headoff &gt;= tailoff)
+00214 tryoff = headoff;
+00215 <font class="keywordflow">if</font> (trybuf)
+00216 free(trybuf);
+00217 <font class="keyword">delete</font> [] key;
+00218 }
+00219 <font class="keywordflow">else</font> { tryoff = 0; }
+00220
+00221 lseek(idxfd-&gt;getFd(), tryoff, SEEK_SET);
+00222
+00223 start = size = 0;
+00224 retval = (read(idxfd-&gt;getFd(), &amp;start, <font class="keyword">sizeof</font>(__u32))==<font class="keyword">sizeof</font>(__u32)) ? retval : -1;
+00225 retval = (read(idxfd-&gt;getFd(), &amp;size, <font class="keyword">sizeof</font>(__u32))==<font class="keyword">sizeof</font>(__u32)) ? retval : -1;
+00226 start = swordtoarch32(start);
+00227 size = swordtoarch32(size);
+00228
+00229 <font class="keywordflow">if</font> (idxoff)
+00230 *idxoff = tryoff;
+00231
+00232 <font class="keywordflow">while</font> (away) {
+00233 __u32 laststart = start;
+00234 __u32 lastsize = size;
+00235 __s32 lasttry = tryoff;
+00236 tryoff += (away &gt; 0) ? IDXENTRYSIZE : -IDXENTRYSIZE;
+00237
+00238 <font class="keywordtype">bool</font> bad = <font class="keyword">false</font>;
+00239 <font class="keywordflow">if</font> (((long)(tryoff + (away*IDXENTRYSIZE)) &lt; -IDXENTRYSIZE) || (tryoff + (away*IDXENTRYSIZE) &gt; (maxoff+IDXENTRYSIZE)))
+00240 bad = <font class="keyword">true</font>;
+00241 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (lseek(idxfd-&gt;getFd(), tryoff, SEEK_SET) &lt; 0)
+00242 bad = <font class="keyword">true</font>;
+00243 <font class="keywordflow">if</font> (bad) {
+00244 retval = -1;
+00245 start = laststart;
+00246 size = lastsize;
+00247 tryoff = lasttry;
+00248 <font class="keywordflow">if</font> (idxoff)
+00249 *idxoff = tryoff;
+00250 <font class="keywordflow">break</font>;
+00251 }
+00252 read(idxfd-&gt;getFd(), &amp;start, <font class="keyword">sizeof</font>(__u32));
+00253 read(idxfd-&gt;getFd(), &amp;size, <font class="keyword">sizeof</font>(__u32));
+00254 start = swordtoarch32(start);
+00255 size = swordtoarch32(size);
+00256
+00257 <font class="keywordflow">if</font> (idxoff)
+00258 *idxoff = tryoff;
+00259
+00260
+00261 <font class="keywordflow">if</font> (((laststart != start) || (lastsize != size)) &amp;&amp; (start &gt;= 0) &amp;&amp; (size))
+00262 away += (away &lt; 0) ? 1 : -1;
+00263 }
+00264
+00265 lastoff = tryoff;
+00266 }
+00267 <font class="keywordflow">else</font> {
+00268 <font class="keywordflow">if</font> (idxoff)
+00269 *idxoff = 0;
+00270 retval = -1;
+00271 }
+00272 <font class="keywordflow">return</font> retval;
+00273 }
+00274
+00275
+00276 <font class="comment">/******************************************************************************</font>
+00277 <font class="comment"> * zStr::preptext - Prepares the text before returning it to external</font>
+00278 <font class="comment"> * objects</font>
+00279 <font class="comment"> *</font>
+00280 <font class="comment"> * ENT: buf - buffer where text is stored and where to store the prep'd</font>
+00281 <font class="comment"> * text.</font>
+00282 <font class="comment"> */</font>
+00283
+00284 <font class="keywordtype">void</font> zStr::prepText(<font class="keywordtype">char</font> *buf) {
+00285 <font class="keywordtype">char</font> *to, *from, space = 0, cr = 0, realdata = 0, nlcnt = 0;
+00286
+00287 <font class="keywordflow">for</font> (to = from = buf; *from; from++) {
+00288 <font class="keywordflow">switch</font> (*from) {
+00289 <font class="keywordflow">case</font> 10:
+00290 <font class="keywordflow">if</font> (!realdata)
+00291 <font class="keywordflow">continue</font>;
+00292 space = (cr) ? 0 : 1;
+00293 cr = 0;
+00294 nlcnt++;
+00295 <font class="keywordflow">if</font> (nlcnt &gt; 1) {
+00296 <font class="comment">// *to++ = nl;</font>
+00297 *to++ = nl;
+00298 <font class="comment">// nlcnt = 0;</font>
+00299 }
+00300 <font class="keywordflow">continue</font>;
+00301 <font class="keywordflow">case</font> 13:
+00302 <font class="keywordflow">if</font> (!realdata)
+00303 <font class="keywordflow">continue</font>;
+00304 *to++ = nl;
+00305 space = 0;
+00306 cr = 1;
+00307 <font class="keywordflow">continue</font>;
+00308 }
+00309 realdata = 1;
+00310 nlcnt = 0;
+00311 <font class="keywordflow">if</font> (space) {
+00312 space = 0;
+00313 <font class="keywordflow">if</font> (*from != <font class="charliteral">' '</font>) {
+00314 *to++ = <font class="charliteral">' '</font>;
+00315 from--;
+00316 <font class="keywordflow">continue</font>;
+00317 }
+00318 }
+00319 *to++ = *from;
+00320 }
+00321 *to = 0;
+00322
+00323 <font class="keywordflow">while</font> (to &gt; (buf+1)) { <font class="comment">// remove trailing excess</font>
+00324 to--;
+00325 <font class="keywordflow">if</font> ((*to == 10) || (*to == <font class="charliteral">' '</font>))
+00326 *to = 0;
+00327 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00328 }
+00329 }
+00330
+00331
+00332 <font class="comment">/******************************************************************************</font>
+00333 <font class="comment"> * zStr::gettext - gets text at a given offset</font>
+00334 <font class="comment"> *</font>
+00335 <font class="comment"> * ENT:</font>
+00336 <font class="comment"> * offset - idxoffset where the key is located.</font>
+00337 <font class="comment"> * buf - buffer to store text</font>
+00338 <font class="comment"> * idxbuf - buffer to store index key</font>
+00339 <font class="comment"> * NOTE: buffer will be alloc'd / realloc'd and </font>
+00340 <font class="comment"> * should be free'd by the client</font>
+00341 <font class="comment"> *</font>
+00342 <font class="comment"> */</font>
+00343
+00344 <font class="keywordtype">void</font> zStr::getText(<font class="keywordtype">long</font> offset, <font class="keywordtype">char</font> **idxbuf, <font class="keywordtype">char</font> **buf) {
+00345 <font class="keywordtype">char</font> *ch;
+00346 <font class="keywordtype">char</font> *idxbuflocal = 0;
+00347 getKeyFromIdxOffset(offset, &amp;idxbuflocal);
+00348 __u32 start;
+00349 __u32 size;
+00350
+00351 <font class="keywordflow">do</font> {
+00352 lseek(idxfd-&gt;getFd(), offset, SEEK_SET);
+00353 read(idxfd-&gt;getFd(), &amp;start, <font class="keyword">sizeof</font>(__u32));
+00354 read(idxfd-&gt;getFd(), &amp;size, <font class="keyword">sizeof</font>(__u32));
+00355 start = swordtoarch32(start);
+00356 size = swordtoarch32(size);
+00357
+00358 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, size + 1) : (char *)malloc(size + 1);
+00359 *idxbuf = (*idxbuf) ? (<font class="keywordtype">char</font> *)realloc(*idxbuf, size + 1) : (char *)malloc(size + 1);
+00360 memset(*buf, 0, size + 1);
+00361 memset(*idxbuf, 0, size + 1);
+00362 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00363 read(datfd-&gt;getFd(), *buf, (int)(size));
+00364
+00365 <font class="keywordflow">for</font> (ch = *buf; *ch; ch++) { <font class="comment">// skip over index string</font>
+00366 <font class="keywordflow">if</font> (*ch == 10) {
+00367 ch++;
+00368 <font class="keywordflow">break</font>;
+00369 }
+00370 }
+00371 memmove(*buf, ch, size - (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>)(ch-*buf));
+00372
+00373 <font class="comment">// resolve link</font>
+00374 <font class="keywordflow">if</font> (!strncmp(*buf, <font class="stringliteral">"@LINK"</font>, 5)) {
+00375 <font class="keywordflow">for</font> (ch = *buf; *ch; ch++) { <font class="comment">// null before nl</font>
+00376 <font class="keywordflow">if</font> (*ch == 10) {
+00377 *ch = 0;
+00378 <font class="keywordflow">break</font>;
+00379 }
+00380 }
+00381 findKeyIndex(*buf + IDXENTRYSIZE, &amp;offset);
+00382 }
+00383 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00384 }
+00385 <font class="keywordflow">while</font> (true); <font class="comment">// while we're resolving links</font>
+00386
+00387 <font class="keywordflow">if</font> (idxbuflocal) {
+00388 __u32 localsize = strlen(idxbuflocal);
+00389 localsize = (localsize &lt; (size - 1)) ? localsize : (size - 1);
+00390 strncpy(*idxbuf, idxbuflocal, localsize);
+00391 (*idxbuf)[localsize] = 0;
+00392 free(idxbuflocal);
+00393 }
+00394 __u32 block = 0;
+00395 __u32 entry = 0;
+00396 memmove(&amp;block, *buf, <font class="keyword">sizeof</font>(__u32));
+00397 memmove(&amp;entry, *buf + <font class="keyword">sizeof</font>(__u32), <font class="keyword">sizeof</font>(__u32));
+00398 block = swordtoarch32(block);
+00399 entry = swordtoarch32(entry);
+00400 getCompressedText(block, entry, buf);
+00401 }
+00402
+00403
+00404 <font class="comment">/******************************************************************************</font>
+00405 <font class="comment"> * zStr::getCompressedText - Get text entry from a compressed index / zdata</font>
+00406 <font class="comment"> * file.</font>
+00407 <font class="comment"> */</font>
+00408
+00409 <font class="keywordtype">void</font> zStr::getCompressedText(<font class="keywordtype">long</font> block, <font class="keywordtype">long</font> entry, <font class="keywordtype">char</font> **buf) {
+00410
+00411 __u32 size = 0;
+00412
+00413 <font class="keywordflow">if</font> (cacheBlockIndex != block) {
+00414 __u32 start = 0;
+00415
+00416 lseek(zdxfd-&gt;getFd(), block * ZDXENTRYSIZE, SEEK_SET);
+00417 read(zdxfd-&gt;getFd(), &amp;start, <font class="keyword">sizeof</font>(__u32));
+00418 read(zdxfd-&gt;getFd(), &amp;size, <font class="keyword">sizeof</font>(__u32));
+00419 start = swordtoarch32(start);
+00420 size = swordtoarch32(size);
+00421
+00422 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, size + 1) : (char *)malloc(size + 1);
+00423
+00424 lseek(zdtfd-&gt;getFd(), start, SEEK_SET);
+00425 read(zdtfd-&gt;getFd(), *buf, size);
+00426
+00427 flushCache();
+00428
+00429 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len = size;
+00430 compressor-&gt;zBuf(&amp;len, *buf);
+00431 <font class="keywordtype">char</font> * rawBuf = compressor-&gt;Buf(0, &amp;len);
+00432 cacheBlock = <font class="keyword">new</font> EntriesBlock(rawBuf, len);
+00433 cacheBlockIndex = block;
+00434 }
+00435 size = cacheBlock-&gt;getEntrySize(entry);
+00436 *buf = (*buf) ? (<font class="keywordtype">char</font> *)realloc(*buf, size + 1) : (char *)malloc(size + 1);
+00437 strcpy(*buf, cacheBlock-&gt;getEntry(entry));
+00438 }
+00439
+00440
+00441 <font class="comment">/******************************************************************************</font>
+00442 <font class="comment"> * zLD::settext - Sets text for current offset</font>
+00443 <font class="comment"> *</font>
+00444 <font class="comment"> * ENT: key - key for this entry</font>
+00445 <font class="comment"> * buf - buffer to store</font>
+00446 <font class="comment"> * len - length of buffer (0 - null terminated)</font>
+00447 <font class="comment"> */</font>
+00448
+00449 <font class="keywordtype">void</font> zStr::setText(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len) {
+00450
+00451 __u32 start, outstart;
+00452 __u32 size, outsize;
+00453 __s32 endoff;
+00454 <font class="keywordtype">long</font> idxoff = 0;
+00455 __s32 shiftSize;
+00456 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> nl[] = {13, 10};
+00457 <font class="keywordtype">char</font> *tmpbuf = 0;
+00458 <font class="keywordtype">char</font> *key = 0;
+00459 <font class="keywordtype">char</font> *dbKey = 0;
+00460 <font class="keywordtype">char</font> *idxBytes = 0;
+00461 <font class="keywordtype">char</font> *outbuf = 0;
+00462 <font class="keywordtype">char</font> *ch = 0;
+00463
+00464 stdstr(&amp;key, ikey);
+00465 toupperstr(key);
+00466
+00467 <font class="keywordtype">char</font> notFound = findKeyIndex(ikey, &amp;idxoff, 0);
+00468 <font class="keywordflow">if</font> (!notFound) {
+00469 getKeyFromIdxOffset(idxoff, &amp;dbKey);
+00470 <font class="keywordtype">int</font> diff = strcmp(key, dbKey);
+00471 <font class="keywordflow">if</font> (diff &lt; 0) {
+00472 }
+00473 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (diff &gt; 0) {
+00474 idxoff += IDXENTRYSIZE;
+00475 }
+00476 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((!diff) &amp;&amp; (len || strlen(buf) <font class="comment">/*we're not deleting*/</font>)) { <font class="comment">// got absolute entry</font>
+00477 <font class="keywordflow">do</font> {
+00478 lseek(idxfd-&gt;getFd(), idxoff, SEEK_SET);
+00479 read(idxfd-&gt;getFd(), &amp;start, <font class="keyword">sizeof</font>(__u32));
+00480 read(idxfd-&gt;getFd(), &amp;size, <font class="keyword">sizeof</font>(__u32));
+00481 start = swordtoarch32(start);
+00482 size = swordtoarch32(size);
+00483
+00484 tmpbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ size + 2 ];
+00485 memset(tmpbuf, 0, size + 2);
+00486 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00487 read(datfd-&gt;getFd(), tmpbuf, size);
+00488
+00489 <font class="keywordflow">for</font> (ch = tmpbuf; *ch; ch++) { <font class="comment">// skip over index string</font>
+00490 <font class="keywordflow">if</font> (*ch == 10) {
+00491 ch++;
+00492 <font class="keywordflow">break</font>;
+00493 }
+00494 }
+00495 memmove(tmpbuf, ch, size - (<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font>)(ch-tmpbuf));
+00496
+00497 <font class="comment">// resolve link</font>
+00498 <font class="keywordflow">if</font> (!strncmp(tmpbuf, <font class="stringliteral">"@LINK"</font>, 5) &amp;&amp; (len ? len : strlen(buf))) {
+00499 <font class="keywordflow">for</font> (ch = tmpbuf; *ch; ch++) { <font class="comment">// null before nl</font>
+00500 <font class="keywordflow">if</font> (*ch == 10) {
+00501 *ch = 0;
+00502 <font class="keywordflow">break</font>;
+00503 }
+00504 }
+00505 findKeyIndex(tmpbuf + IDXENTRYSIZE, &amp;idxoff);
+00506 <font class="keyword">delete</font> [] tmpbuf;
+00507 }
+00508 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00509 }
+00510 <font class="keywordflow">while</font> (true); <font class="comment">// while we're resolving links</font>
+00511 }
+00512 }
+00513
+00514 endoff = lseek(idxfd-&gt;getFd(), 0, SEEK_END);
+00515
+00516 shiftSize = endoff - idxoff;
+00517
+00518 <font class="keywordflow">if</font> (shiftSize &gt; 0) {
+00519 idxBytes = <font class="keyword">new</font> <font class="keywordtype">char</font> [ shiftSize ];
+00520 lseek(idxfd-&gt;getFd(), idxoff, SEEK_SET);
+00521 read(idxfd-&gt;getFd(), idxBytes, shiftSize);
+00522 }
+00523
+00524 outbuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ (len ? len : strlen(buf)) + strlen(key) + 5 ];
+00525 sprintf(outbuf, <font class="stringliteral">"%s%c%c"</font>, key, 13, 10);
+00526 size = strlen(outbuf);
+00527 <font class="keywordflow">if</font> (len ? len : strlen(buf)) { <font class="comment">// NOT a link</font>
+00528 <font class="keywordflow">if</font> (!cacheBlock) {
+00529 flushCache();
+00530 cacheBlock = <font class="keyword">new</font> EntriesBlock();
+00531 cacheBlockIndex = (lseek(zdxfd-&gt;getFd(), 0, SEEK_END) / ZDXENTRYSIZE);
+00532 }
+00533 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (cacheBlock-&gt;getCount() &gt;= blockCount) {
+00534 flushCache();
+00535 cacheBlock = <font class="keyword">new</font> EntriesBlock();
+00536 cacheBlockIndex = (lseek(zdxfd-&gt;getFd(), 0, SEEK_END) / ZDXENTRYSIZE);
+00537 }
+00538 __u32 entry = cacheBlock-&gt;addEntry(buf);
+00539 cacheDirty = <font class="keyword">true</font>;
+00540 outstart = archtosword32(cacheBlockIndex);
+00541 outsize = archtosword32(entry);
+00542 memcpy (outbuf + size, &amp;outstart, <font class="keyword">sizeof</font>(__u32));
+00543 memcpy (outbuf + size + <font class="keyword">sizeof</font>(__u32), &amp;outsize, <font class="keyword">sizeof</font>(__u32));
+00544 size += (<font class="keyword">sizeof</font>(__u32) * 2);
+00545 }
+00546 <font class="keywordflow">else</font> { <font class="comment">// link</font>
+00547 memcpy(outbuf + size, buf, len ? len : strlen(buf));
+00548 size += (len ? len : strlen(buf));
+00549 }
+00550
+00551 start = lseek(datfd-&gt;getFd(), 0, SEEK_END);
+00552
+00553 outstart = archtosword32(start);
+00554 outsize = archtosword32(size);
+00555
+00556 lseek(idxfd-&gt;getFd(), idxoff, SEEK_SET);
+00557 <font class="keywordflow">if</font> (len ? len : strlen(buf)) {
+00558 lseek(datfd-&gt;getFd(), start, SEEK_SET);
+00559 write(datfd-&gt;getFd(), outbuf, size);
+00560
+00561 <font class="comment">// add a new line to make data file easier to read in an editor</font>
+00562 write(datfd-&gt;getFd(), &amp;nl, 2);
+00563
+00564 write(idxfd-&gt;getFd(), &amp;outstart, <font class="keyword">sizeof</font>(__u32));
+00565 write(idxfd-&gt;getFd(), &amp;outsize, <font class="keyword">sizeof</font>(__u32));
+00566 <font class="keywordflow">if</font> (idxBytes) {
+00567 write(idxfd-&gt;getFd(), idxBytes, shiftSize);
+00568 }
+00569 }
+00570 <font class="keywordflow">else</font> { <font class="comment">// delete entry</font>
+00571 <font class="keywordflow">if</font> (idxBytes) {
+00572 write(idxfd-&gt;getFd(), idxBytes+IDXENTRYSIZE, shiftSize-IDXENTRYSIZE);
+00573 lseek(idxfd-&gt;getFd(), -1, SEEK_CUR); <font class="comment">// last valid byte</font>
+00574 FileMgr::systemFileMgr.trunc(idxfd); <font class="comment">// truncate index</font>
+00575 }
+00576 }
+00577
+00578 <font class="keywordflow">if</font> (idxBytes)
+00579 <font class="keyword">delete</font> [] idxBytes;
+00580 <font class="keyword">delete</font> [] key;
+00581 <font class="keyword">delete</font> [] outbuf;
+00582 free(dbKey);
+00583 }
+00584
+00585
+00586 <font class="comment">/******************************************************************************</font>
+00587 <font class="comment"> * zLD::linkentry - links one entry to another</font>
+00588 <font class="comment"> *</font>
+00589 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00590 <font class="comment"> * destidxoff - dest offset into .vss</font>
+00591 <font class="comment"> * srcidxoff - source offset into .vss</font>
+00592 <font class="comment"> */</font>
+00593
+00594 <font class="keywordtype">void</font> zStr::linkEntry(<font class="keyword">const</font> <font class="keywordtype">char</font> *destkey, <font class="keyword">const</font> <font class="keywordtype">char</font> *srckey) {
+00595 <font class="keywordtype">char</font> *text = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(destkey) + 7 ];
+00596 sprintf(text, <font class="stringliteral">"@LINK %s"</font>, destkey);
+00597 <a class="code" href="class_verse_key.html#a13">setText</a>(srckey, text);
+00598 <font class="keyword">delete</font> [] text;
+00599 }
+00600
+00601
+00602 <font class="keywordtype">void</font> zStr::flushCache() {
+00603 <font class="keywordflow">if</font> (cacheBlock) {
+00604 <font class="keywordflow">if</font> (cacheDirty) {
+00605 __u32 start = 0;
+00606 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size = 0;
+00607 __u32 outstart = 0, outsize = 0;
+00608
+00609 <font class="keyword">const</font> <font class="keywordtype">char</font> *rawBuf = cacheBlock-&gt;getRawData(&amp;size);
+00610 compressor-&gt;Buf(rawBuf, &amp;size);
+00611 compressor-&gt;zBuf(&amp;size);
+00612
+00613 <font class="keywordtype">long</font> zdxSize = lseek(zdxfd-&gt;getFd(), 0, SEEK_END);
+00614 <font class="keywordtype">long</font> zdtSize = lseek(zdtfd-&gt;getFd(), 0, SEEK_END);
+00615
+00616 <font class="keywordflow">if</font> ((cacheBlockIndex * ZDXENTRYSIZE) &gt; (zdxSize - ZDXENTRYSIZE)) { <font class="comment">// New Block</font>
+00617 start = zdtSize;
+00618 }
+00619 <font class="keywordflow">else</font> {
+00620 lseek(zdxfd-&gt;getFd(), cacheBlockIndex * ZDXENTRYSIZE, SEEK_SET);
+00621 read(zdxfd-&gt;getFd(), &amp;start, <font class="keyword">sizeof</font>(__u32));
+00622 read(zdxfd-&gt;getFd(), &amp;outsize, <font class="keyword">sizeof</font>(__u32));
+00623 start = swordtoarch32(start);
+00624 outsize = swordtoarch32(outsize);
+00625 <font class="keywordflow">if</font> (start + outsize &gt;= zdtSize) { <font class="comment">// last entry, just overwrite</font>
+00626 <font class="comment">// start is already set</font>
+00627 }
+00628 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (size &lt; outsize) { <font class="comment">// middle entry, but smaller, that's fine and let's preserve bigger size</font>
+00629 size = outsize;
+00630 }
+00631 <font class="keywordflow">else</font> { <font class="comment">// middle and bigger-- we have serious problems, for now let's put it at the end = lots of wasted space</font>
+00632 start = zdtSize;
+00633 }
+00634 }
+00635
+00636
+00637
+00638 outstart = archtosword32(start);
+00639 outsize = archtosword32((__u32)size);
+00640
+00641 lseek(zdxfd-&gt;getFd(), cacheBlockIndex * ZDXENTRYSIZE, SEEK_SET);
+00642 lseek(zdtfd-&gt;getFd(), start, SEEK_SET);
+00643 rawBuf = compressor-&gt;zBuf(&amp;size);
+00644 write(zdtfd-&gt;getFd(), rawBuf, size);
+00645
+00646 <font class="comment">// add a new line to make data file easier to read in an editor</font>
+00647 write(zdtfd-&gt;getFd(), &amp;nl, 2);
+00648
+00649 write(zdxfd-&gt;getFd(), &amp;outstart, <font class="keyword">sizeof</font>(__u32));
+00650 write(zdxfd-&gt;getFd(), &amp;outsize, <font class="keyword">sizeof</font>(__u32));
+00651
+00652 <font class="keyword">delete</font> cacheBlock;
+00653 }
+00654 }
+00655 cacheBlockIndex = -1;
+00656 cacheBlock = 0;
+00657 cacheDirty = <font class="keyword">false</font>;
+00658 }
+00659
+00660
+00661 <font class="comment">/******************************************************************************</font>
+00662 <font class="comment"> * zLD::CreateModule - Creates new module files</font>
+00663 <font class="comment"> *</font>
+00664 <font class="comment"> * ENT: path - directory to store module files</font>
+00665 <font class="comment"> * RET: error status</font>
+00666 <font class="comment"> */</font>
+00667
+00668 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> zStr::createModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath) {
+00669 <font class="keywordtype">char</font> *path = 0;
+00670 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00671 FileDesc *fd, *fd2;
+00672
+00673 stdstr(&amp;path, ipath);
+00674
+00675 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00676 path[strlen(path)-1] = 0;
+00677
+00678 sprintf(buf, <font class="stringliteral">"%s.dat"</font>, path);
+00679 unlink(buf);
+00680 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00681 fd-&gt;getFd();
+00682 FileMgr::systemFileMgr.close(fd);
+00683
+00684 sprintf(buf, <font class="stringliteral">"%s.idx"</font>, path);
+00685 unlink(buf);
+00686 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00687 fd2-&gt;getFd();
+00688 FileMgr::systemFileMgr.close(fd2);
+00689
+00690 sprintf(buf, <font class="stringliteral">"%s.zdt"</font>, path);
+00691 unlink(buf);
+00692 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00693 fd2-&gt;getFd();
+00694 FileMgr::systemFileMgr.close(fd2);
+00695
+00696 sprintf(buf, <font class="stringliteral">"%s.zdx"</font>, path);
+00697 unlink(buf);
+00698 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00699 fd2-&gt;getFd();
+00700 FileMgr::systemFileMgr.close(fd2);
+00701
+00702 <font class="keyword">delete</font> [] path;
+00703
+00704 <font class="keywordflow">return</font> 0;
+00705 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zstr_8h-source.html b/doc/api-documentation/html/zstr_8h-source.html
new file mode 100644
index 0000000..47bf10b
--- /dev/null
+++ b/doc/api-documentation/html/zstr_8h-source.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zstr.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zstr.h</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> * zstr.h - code for class 'zStr'- a module that reads compressed text</font>
+00003 <font class="comment"> * files.</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class StrKey</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * $Id: zstr_8h-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00010 <font class="comment"> * CrossWire Bible Society</font>
+00011 <font class="comment"> * P. O. Box 2528</font>
+00012 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00013 <font class="comment"> *</font>
+00014 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00015 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00016 <font class="comment"> * Free Software Foundation version 2.</font>
+00017 <font class="comment"> *</font>
+00018 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00019 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00020 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00021 <font class="comment"> * General Public License for more details.</font>
+00022 <font class="comment"> *</font>
+00023 <font class="comment"> */</font>
+00024
+00025 <font class="preprocessor">#ifndef ZSTR_H</font>
+00026 <font class="preprocessor"></font><font class="preprocessor">#define ZSTR_H</font>
+00027 <font class="preprocessor"></font>
+00028 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="keyword">class </font>SWCompress;
+00033 <font class="keyword">class </font>EntriesBlock;
+00034
+00035 <font class="keyword">class </font>SWDLLEXPORT zStr {
+00036
+00037 <font class="keyword">private</font>:
+00038 <font class="keyword">static</font> <font class="keywordtype">int</font> instance; <font class="comment">// number of instantiated zStr objects or derivitives</font>
+00039 EntriesBlock *cacheBlock;
+00040 <font class="keywordtype">long</font> cacheBlockIndex;
+00041 <font class="keywordtype">bool</font> cacheDirty;
+00042 <font class="keywordtype">char</font> *path;
+00043 <font class="keywordtype">long</font> lastoff;
+00044 <font class="keywordtype">long</font> blockCount;
+00045 SWCompress *compressor;
+00046
+00047 <font class="keyword">protected</font>:
+00048 FileDesc *idxfd;
+00049 FileDesc *datfd;
+00050 FileDesc *zdxfd;
+00051 FileDesc *zdtfd;
+00052 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">int</font> IDXENTRYSIZE;
+00053 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">int</font> ZDXENTRYSIZE;
+00054
+00055 <font class="keywordtype">void</font> getCompressedText(<font class="keywordtype">long</font> block, <font class="keywordtype">long</font> entry, <font class="keywordtype">char</font> **buf);
+00056 <font class="keywordtype">void</font> flushCache();
+00057 <font class="keywordtype">void</font> prepText(<font class="keywordtype">char</font> *buf);
+00058 <font class="keywordtype">void</font> getKeyFromDatOffset(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf);
+00059 <font class="keywordtype">void</font> getKeyFromIdxOffset(<font class="keywordtype">long</font> ioffset, <font class="keywordtype">char</font> **buf);
+00060
+00061 <font class="keyword">public</font>:
+00062 <font class="keywordtype">char</font> nl;
+00063 zStr(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode = -1, <font class="keywordtype">long</font> blockCount = 100, SWCompress *icomp = 0);
+00064 <font class="keyword">virtual</font> ~zStr();
+00065 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> findKeyIndex(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keywordtype">long</font> *idxoff, <font class="keywordtype">long</font> away = 0);
+00066 <font class="keywordtype">void</font> getText(<font class="keywordtype">long</font> index, <font class="keywordtype">char</font> **idxbuf, <font class="keywordtype">char</font> **buf);
+00067 <font class="keywordtype">void</font> setText(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len = 0);
+00068 <font class="keywordtype">void</font> linkEntry(<font class="keyword">const</font> <font class="keywordtype">char</font> *destkey, <font class="keyword">const</font> <font class="keywordtype">char</font> *srckey);
+00069 <font class="keyword">static</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> createModule (<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
+00070 };
+00071
+00072 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/ztext_2gbfidx_8cpp-source.html b/doc/api-documentation/html/ztext_2gbfidx_8cpp-source.html
new file mode 100644
index 0000000..cd962aa
--- /dev/null
+++ b/doc/api-documentation/html/ztext_2gbfidx_8cpp-source.html
@@ -0,0 +1,675 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>gbfidx.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>gbfidx.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/*****************************************************************************</font>
+00002 <font class="comment"> *</font>
+00003 <font class="comment"> * This code reeks but works (sometimes). Good luck!</font>
+00004 <font class="comment"> * Modified for zText purposes</font>
+00005 <font class="comment"> */</font>
+00006
+00007 <font class="comment">//#include &lt;stdio.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;iostream&gt;</font>
+00009 <font class="preprocessor">#include &lt;fstream&gt;</font>
+00010 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00013 <font class="preprocessor">#include &lt;assert.h&gt;</font>
+00014
+00015 <font class="comment">//#ifndef __GNUC__</font>
+00016 <font class="preprocessor">#include &lt;io.h&gt;</font>
+00017 <font class="comment">//#else</font>
+00018 <font class="comment">//#include &lt;unistd.h&gt;</font>
+00019 <font class="comment">//#endif</font>
+00020
+00021 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00023
+00024
+00025 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size);
+00026 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *size);
+00027 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname);
+00028 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv);
+00029
+00030
+00031 <a class="code" href="class_verse_key.html">VerseKey</a> key1, key2, key3;
+00032 <font class="keywordtype">int</font> fp=0, vfp=0, cfp=0, bfp=0;
+00033 <font class="keywordtype">long</font> chapoffset=0;
+00034 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> chapsize=0;
+00035 <font class="keywordtype">long</font> bookoffset=0;
+00036 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> booksize=0;
+00037 <font class="keywordtype">long</font> testoffset=0;
+00038 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> testsize=0;
+00039 <font class="keywordtype">long</font> verseoffset=0;
+00040 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> versesize=0;
+00041 <font class="keywordtype">long</font> nextoffset=0;
+00042 <font class="keywordtype">char</font> testmnt=0;
+00043 <font class="keywordtype">int</font> deadcount = 0;
+00044 <font class="keywordtype">int</font> chapmark=-4, bookmark=-1;
+00045 ofstream cfile;
+00046
+00047
+00048 <font class="keywordtype">int</font> main(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00049 {
+00050 <font class="keywordtype">long</font> pos, offset;
+00051 <font class="keywordtype">int</font> num1, num2, rangemax;<font class="comment">//, curbook = 0, curchap = 0, curverse = 0;</font>
+00052 <font class="comment">//char buf[127],</font>
+00053 <font class="keywordtype">char</font> startflag = 0;
+00054 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;<font class="comment">//, tmp;</font>
+00055
+00056 checkparams(argc, argv);
+00057
+00058 openfiles(argv[1]);
+00059 <font class="comment">//key1 = "Matthew 1:1";</font>
+00060 <font class="comment">//key2 = "Matthew 1:1";</font>
+00061 <font class="comment">//key3 = "Matthew 1:1";</font>
+00062
+00063 testmnt = key1.<a class="code" href="class_verse_key.html#a22">Testament</a>();
+00064 cfile &lt;&lt; <font class="stringliteral">"testament"</font> &lt;&lt; (int) testmnt &lt;&lt; <font class="stringliteral">"\n"</font>;
+00065 num1 = key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>();
+00066 num2 = key1.<a class="code" href="class_verse_key.html#a25">Verse</a>();
+00067 pos = 0;
+00068 write(bfp, &amp;pos, 4); <font class="comment">/* Book offset for testament intros */</font>
+00069 pos = 4;
+00070 write(cfp, &amp;pos, 4); <font class="comment">/* Chapter offset for testament intro */</font>
+00071
+00072
+00073 <font class="comment">/* Right now just zero out intros until parsing correctly */</font>
+00074 <font class="comment">/*pos = 0;</font>
+00075 <font class="comment"> size = 0;</font>
+00076 <font class="comment"> write(vfp, &amp;pos, 4); // Module intro</font>
+00077 <font class="comment"> write(vfp, &amp;size, 2);</font>
+00078 <font class="comment"> cfile &lt;&lt; "modintro pos{" &lt;&lt; pos &lt;&lt; "} size{" &lt;&lt; size &lt;&lt; "}\n";</font>
+00079 <font class="comment"> write(vfp, &amp;pos, 4); // Testament intro</font>
+00080 <font class="comment"> write(vfp, &amp;size, 2);</font>
+00081 <font class="comment"> cfile &lt;&lt; "test intro pos{" &lt;&lt; pos &lt;&lt; "} size{" &lt;&lt; size &lt;&lt; "}\n";</font>
+00082 <font class="comment"> */</font>
+00083 cout &lt;&lt; <font class="stringliteral">"GBFIDX Running\n"</font>;
+00084 cout.flush();
+00085 <font class="keywordflow">while</font>(!findbreak(fp, &amp;offset, &amp;num1, &amp;num2, &amp;rangemax, &amp;size)) {
+00086 <font class="keywordflow">if</font> (!startflag) {
+00087 startflag = 1;
+00088 }
+00089 <font class="keywordflow">else</font> {
+00090 <font class="keywordflow">if</font> (num2 &lt; key2.<a class="code" href="class_verse_key.html#a25">Verse</a>()) { <font class="comment">// new chapter</font>
+00091 <font class="keywordflow">if</font> (num1 &lt;= key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>()) { <font class="comment">// new book</font>
+00092 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00093 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
+00094 key2.<a class="code" href="class_verse_key.html#a23">Book</a>(key2.<a class="code" href="class_verse_key.html#a23">Book</a>()+1);
+00095 }
+00096 cfile &lt;&lt; <font class="stringliteral">"Found Chapter Break: "</font> &lt;&lt; num1 &lt;&lt; <font class="stringliteral">" ('"</font> &lt;&lt; (<font class="keyword">const</font> <font class="keywordtype">char</font> *)key2 &lt;&lt; <font class="stringliteral">"')\n"</font>;
+00097 <font class="comment">//chapoffset = offset;</font>
+00098 <font class="comment">//chapsize = chapsize - size;</font>
+00099 <font class="comment">// continue;</font>
+00100 }
+00101 }
+00102 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(1);
+00103 key2.<a class="code" href="class_verse_key.html#a24">Chapter</a>(num1);
+00104 key2.<a class="code" href="class_verse_key.html#a25">Verse</a>(num2);
+00105
+00106 key3 = key2;
+00107 <font class="comment">// key3 += (rangemax - key3.Verse());</font>
+00108
+00109 writeidx(key1, key2, key3, offset, size);
+00110 }
+00111 close(vfp);
+00112 close(cfp);
+00113 close(bfp);
+00114 close(fp);
+00115
+00116 <font class="keywordflow">return</font> 1;
+00117 }
+00118
+00119
+00120 <font class="comment">/**************************************************************************</font>
+00121 <font class="comment"> * writeidx: key1 - current location of index</font>
+00122 <font class="comment"> * key2 - minimum keyval for which this offset is valid</font>
+00123 <font class="comment"> * key3 - maximum keyval for which this offset is valid</font>
+00124 <font class="comment"> */</font>
+00125
+00126 <font class="keywordtype">void</font> writeidx(<a class="code" href="class_verse_key.html">VerseKey</a> &amp;key1, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key2, <a class="code" href="class_verse_key.html">VerseKey</a> &amp;key3, <font class="keywordtype">long</font> offset, <font class="keywordtype">short</font> size)
+00127 {
+00128 <font class="keywordtype">long</font> pos;
+00129 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> tmp;
+00130
+00131 <font class="keywordflow">for</font> (; ((key1 &lt;= key3) &amp;&amp; (key1.<a class="code" href="class_s_w_key.html#a6">Error</a>() != KEYERR_OUTOFBOUNDS) &amp;&amp; (key1.<a class="code" href="class_verse_key.html#a22">Testament</a>() == testmnt)); key1+=1) {
+00132 <font class="keywordflow">if</font> (chapmark&gt;=2)
+00133 {
+00134 <font class="keywordflow">if</font> (bookmark==2)
+00135 {
+00136 <font class="comment">//booksize = booksize - chapsize + 7;</font>
+00137 cfile &lt;&lt; <font class="stringliteral">"versesize "</font> &lt;&lt; versesize &lt;&lt; <font class="stringliteral">" booksize "</font> &lt;&lt; booksize &lt;&lt; <font class="stringliteral">" chapsize "</font> &lt;&lt; chapsize &lt;&lt; <font class="stringliteral">" size "</font> &lt;&lt; size &lt;&lt; <font class="stringliteral">"\n"</font>;
+00138 <font class="comment">//cfile.flush();</font>
+00139 <font class="comment">//assert(chapsize &lt; size);</font>
+00140 <font class="comment">//if (chapsize &gt; size) // At start of Psalms gets chapsize rather than chapsize+size ???</font>
+00141 <font class="comment">//{</font>
+00142 <font class="comment">// versesize = versesize - (booksize - (chapsize - size) + 7);</font>
+00143 <font class="comment">//}</font>
+00144 <font class="comment">//else</font>
+00145 <font class="comment">//{</font>
+00146 versesize = versesize - (booksize - (chapsize) + 7);
+00147 <font class="comment">//}</font>
+00148 cfile &lt;&lt; <font class="stringliteral">"Last verse in book\n"</font>;
+00149 }
+00150 <font class="comment">//chapsize = chapsize - size;</font>
+00151 cfile &lt;&lt; <font class="stringliteral">"versesize "</font> &lt;&lt; versesize &lt;&lt; <font class="stringliteral">" chapsize "</font> &lt;&lt; chapsize &lt;&lt; <font class="stringliteral">" size "</font> &lt;&lt; size&lt;&lt; <font class="stringliteral">"\n"</font>;
+00152 cfile.flush();
+00153 <font class="comment">//assert(chapsize &gt; size);</font>
+00154 <font class="comment">//if (chapsize &gt; size) // At start of Psalms gets chapsize rather than chapsize+size ???</font>
+00155 <font class="comment">//{</font>
+00156 <font class="comment">// versesize = versesize - (chapsize - size);</font>
+00157 <font class="comment">//}</font>
+00158 <font class="comment">//else</font>
+00159 <font class="comment">//{</font>
+00160 versesize = versesize - (chapsize);
+00161 <font class="comment">//}</font>
+00162 cfile &lt;&lt; <font class="stringliteral">"Last verse in chapter\n"</font>;
+00163 }
+00164 <font class="keywordflow">if</font> (chapmark&gt;=2 &amp;&amp; bookmark!=1)
+00165 {
+00166 cfile &lt;&lt; <font class="stringliteral">"prev verse pos{"</font> &lt;&lt; verseoffset &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; versesize &lt;&lt; <font class="stringliteral">"} nextoffset{"</font> &lt;&lt; nextoffset &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00167 cfile.flush();
+00168 assert(verseoffset==nextoffset);
+00169 write(vfp, &amp;verseoffset, 4);
+00170 write(vfp, &amp;versesize, 2);
+00171 nextoffset = verseoffset+versesize;
+00172 bookmark = 0;
+00173 chapmark = 0;
+00174 }
+00175 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a25">Verse</a>() == 1) { <font class="comment">// new chapter</font>
+00176 cfile &lt;&lt; <font class="stringliteral">"size??? "</font> &lt;&lt; size &lt;&lt; <font class="stringliteral">"\n"</font>;
+00177 cfile.flush();
+00178 <font class="comment">//assert(chapsize &gt; size || key1.Chapter()==1);</font>
+00179 <font class="comment">//assert(chapsize &gt; size);</font>
+00180 <font class="comment">//if (chapsize &gt; size) // At start of books gets chapsize rather than chapsize+size</font>
+00181 <font class="comment">//{</font>
+00182 <font class="comment">// chapsize = chapsize - size;</font>
+00183 <font class="comment">//}</font>
+00184 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a24">Chapter</a>() == 1) { <font class="comment">// new book</font>
+00185 booksize = booksize - chapsize + 7;
+00186 <font class="keywordflow">if</font> (key1.<a class="code" href="class_verse_key.html#a23">Book</a>() == 1)
+00187 {
+00188 pos = 0;
+00189 <font class="comment">//tmp = testoffset;</font>
+00190 tmp = 0; <font class="comment">// better just remember that it goes up to the testament intro to avoid 64k limit</font>
+00191 <font class="comment">// AV exceeds that anyway!</font>
+00192 write(vfp, &amp;pos, 4); <font class="comment">/* Module intro */</font>
+00193 write(vfp, &amp;tmp, 2);
+00194 assert(nextoffset==0);
+00195 cfile &lt;&lt; <font class="stringliteral">"modintro pos{"</font> &lt;&lt; pos &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; tmp &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00196 testsize = testsize - booksize - chapsize + 7;
+00197 <font class="keywordflow">if</font> (testsize &gt; 10000)
+00198 {
+00199 cerr &lt;&lt; <font class="stringliteral">"Error: testament too big "</font> &lt;&lt; testsize &lt;&lt; <font class="stringliteral">"\n"</font>;
+00200 exit(-1);
+00201 }
+00202 <font class="comment">//assert(testoffset==nextoffset);</font>
+00203 write(vfp, &amp;testoffset, 4); <font class="comment">/* Testament intro (vss) */</font>
+00204 write(vfp, &amp;testsize, 2);
+00205 nextoffset = testoffset+testsize;
+00206 cfile &lt;&lt; <font class="stringliteral">"test intro pos{"</font> &lt;&lt; testoffset &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; testsize &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00207 }
+00208 pos = lseek(cfp, 0, SEEK_CUR);
+00209 write(bfp, &amp;pos, 4);
+00210 pos = lseek(vfp, 0, SEEK_CUR); <font class="comment">/* Book intro (cps) */</font>
+00211 write(cfp, &amp;pos, 4);
+00212 <font class="keywordflow">if</font> (booksize &gt; 10000)
+00213 {
+00214 cerr &lt;&lt; <font class="stringliteral">"Error: book too big "</font> &lt;&lt; booksize &lt;&lt; <font class="stringliteral">"\n"</font>;
+00215 exit(-1);
+00216 }
+00217 assert(bookoffset==nextoffset);
+00218 write(vfp, &amp;bookoffset, 4); <font class="comment">/* Book intro (vss) */</font>
+00219 write(vfp, &amp;booksize, 2);
+00220 nextoffset = bookoffset+booksize;
+00221 cfile &lt;&lt; <font class="stringliteral">"book intro pos{"</font> &lt;&lt; bookoffset &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; booksize &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00222 <font class="comment">//offset += booksize;</font>
+00223 <font class="comment">//bookmark = false;</font>
+00224 }
+00225 pos = lseek(vfp, 0, SEEK_CUR);
+00226 write(cfp, &amp;pos, 4);
+00227 assert(chapsize &lt; 10000);
+00228 write(vfp, &amp;chapoffset, 4); <font class="comment">/* Chapter intro */</font>
+00229 write(vfp, &amp;chapsize, 2);
+00230 nextoffset = chapoffset+chapsize;
+00231 cfile &lt;&lt; <font class="stringliteral">"chapter intro pos{"</font> &lt;&lt; chapoffset &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; chapsize &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00232 <font class="comment">//offset += chapsize;</font>
+00233 <font class="comment">//size -= chapsize;</font>
+00234 <font class="comment">//chapmark = false;</font>
+00235 }
+00236 <font class="keywordflow">if</font> (key1 &gt;= key2) {
+00237 <font class="keywordflow">if</font> (size &gt; 10000)
+00238 {
+00239 cerr &lt;&lt; <font class="stringliteral">"Error: verse too big "</font> &lt;&lt; size &lt;&lt; <font class="stringliteral">"\n"</font>;
+00240 exit(-1);
+00241 }
+00242 <font class="keywordflow">if</font> (!chapmark &amp;&amp; !bookmark)
+00243 {
+00244 write(vfp, &amp;offset, 4);
+00245 write(vfp, &amp;size, 2);
+00246 cfile &lt;&lt; <font class="stringliteral">"verse pos{"</font> &lt;&lt; offset &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; size &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00247 cfile.flush();
+00248 assert(offset==nextoffset);
+00249 nextoffset = offset+size;
+00250 <font class="comment">//cfile &lt;&lt; "bookmark " &lt;&lt; bookmark &lt;&lt; " chapmark " &lt;&lt; chapmark &lt;&lt; "\n";</font>
+00251 }
+00252 <font class="keywordflow">else</font>
+00253 {
+00254 verseoffset = offset;
+00255 versesize = size;
+00256 cfile &lt;&lt; <font class="stringliteral">"saving verse pos{"</font> &lt;&lt; offset &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; size &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00257 cfile &lt;&lt; <font class="stringliteral">"bookmark "</font> &lt;&lt; bookmark &lt;&lt; <font class="stringliteral">" chapmark "</font> &lt;&lt; chapmark &lt;&lt; <font class="stringliteral">"\n"</font>;
+00258 }
+00259 }
+00260 <font class="keywordflow">else</font> {
+00261 pos = 0;
+00262 tmp = 0;
+00263 write(vfp, &amp;pos, 4);
+00264 write(vfp, &amp;tmp, 2);
+00265 cfile &lt;&lt; <font class="stringliteral">"blank pos{"</font> &lt;&lt; pos &lt;&lt; <font class="stringliteral">"} size{"</font> &lt;&lt; tmp &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00266 }
+00267 }
+00268 }
+00269
+00270 <font class="keywordtype">char</font> startmod(<font class="keywordtype">char</font> *buf)
+00271 {
+00272 <font class="comment">//char loop;</font>
+00273
+00274 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00275 <font class="keywordflow">return</font> 0;
+00276 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'H'</font>)
+00277 <font class="keywordflow">return</font> 0;
+00278 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'0'</font>)
+00279 <font class="keywordflow">return</font> 0;
+00280 <font class="comment">/*</font>
+00281 <font class="comment"> if (!isdigit(buf[2]))</font>
+00282 <font class="comment"> return 0;</font>
+00283 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00284 <font class="comment"> if (buf[loop] == ' ')</font>
+00285 <font class="comment"> break;</font>
+00286 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00287 <font class="comment"> return 0;</font>
+00288 <font class="comment"> }</font>
+00289 <font class="comment">*/</font>
+00290 <font class="keywordflow">return</font> 1;
+00291 }
+00292
+00293
+00294 <font class="keywordtype">char</font> starttest(<font class="keywordtype">char</font> *buf)
+00295 {
+00296 <font class="comment">//char loop;</font>
+00297
+00298 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00299 <font class="keywordflow">return</font> 0;
+00300 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'B'</font>)
+00301 <font class="keywordflow">return</font> 0;
+00302 <font class="keywordflow">if</font> (testmnt==2)
+00303 {
+00304 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'N'</font>)
+00305 <font class="keywordflow">return</font> 0;
+00306 }
+00307 <font class="keywordflow">else</font>
+00308 {
+00309 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'O'</font>)
+00310 <font class="keywordflow">return</font> 0;
+00311 }
+00312 <font class="comment">//if (buf[3] != '&gt;')</font>
+00313 <font class="comment">// return 0;</font>
+00314 <font class="comment">/*</font>
+00315 <font class="comment"> if (!isdigit(buf[2]))</font>
+00316 <font class="comment"> return 0;</font>
+00317 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00318 <font class="comment"> if (buf[loop] == ' ')</font>
+00319 <font class="comment"> break;</font>
+00320 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00321 <font class="comment"> return 0;</font>
+00322 <font class="comment"> }</font>
+00323 <font class="comment">*/</font>
+00324 <font class="keywordflow">return</font> 1;
+00325 }
+00326
+00327
+00328 <font class="keywordtype">char</font> startbook(<font class="keywordtype">char</font> *buf)
+00329 {
+00330 <font class="comment">//char loop;</font>
+00331
+00332 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00333 <font class="keywordflow">return</font> 0;
+00334 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'S'</font>)
+00335 <font class="keywordflow">return</font> 0;
+00336 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'B'</font>)
+00337 <font class="keywordflow">return</font> 0;
+00338 <font class="comment">/*</font>
+00339 <font class="comment"> if (!isdigit(buf[2]))</font>
+00340 <font class="comment"> return 0;</font>
+00341 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00342 <font class="comment"> if (buf[loop] == ' ')</font>
+00343 <font class="comment"> break;</font>
+00344 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00345 <font class="comment"> return 0;</font>
+00346 <font class="comment"> }</font>
+00347 <font class="comment">*/</font>
+00348 <font class="keywordflow">return</font> 1;
+00349 }
+00350
+00351
+00352 <font class="keywordtype">char</font> startchap(<font class="keywordtype">char</font> *buf)
+00353 {
+00354 <font class="comment">//char loop;</font>
+00355
+00356 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00357 <font class="keywordflow">return</font> 0;
+00358 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'S'</font>)
+00359 <font class="keywordflow">return</font> 0;
+00360 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'C'</font>)
+00361 <font class="keywordflow">return</font> 0;
+00362 <font class="comment">/*</font>
+00363 <font class="comment"> if (!isdigit(buf[2]))</font>
+00364 <font class="comment"> return 0;</font>
+00365 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00366 <font class="comment"> if (buf[loop] == ' ')</font>
+00367 <font class="comment"> break;</font>
+00368 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00369 <font class="comment"> return 0;</font>
+00370 <font class="comment"> }</font>
+00371 <font class="comment">*/</font>
+00372 <font class="keywordflow">return</font> 1;
+00373 }
+00374
+00375
+00376 <font class="keywordtype">char</font> startentry(<font class="keywordtype">char</font> *buf)
+00377 {
+00378 <font class="comment">//char loop;</font>
+00379 <font class="comment">//cfile &lt;&lt; "{SV}";</font>
+00380
+00381 <font class="keywordflow">if</font> (buf[0] != <font class="charliteral">'&lt;'</font>)
+00382 {
+00383 <font class="comment">//cfile &lt;&lt; "{no&lt;}";</font>
+00384 <font class="keywordflow">return</font> 0;
+00385 }
+00386 <font class="keywordflow">if</font> (buf[1] != <font class="charliteral">'S'</font>)
+00387 {
+00388 <font class="comment">//cfile &lt;&lt; "\n{noS}\n";</font>
+00389 <font class="keywordflow">return</font> 0;
+00390 }
+00391 <font class="keywordflow">if</font> (buf[2] != <font class="charliteral">'V'</font>)
+00392 {
+00393 <font class="comment">//cfile &lt;&lt; "\n{noV}\n";</font>
+00394 <font class="keywordflow">return</font> 0;
+00395 }
+00396 <font class="comment">/*</font>
+00397 <font class="comment"> if (!isdigit(buf[2]))</font>
+00398 <font class="comment"> return 0;</font>
+00399 <font class="comment"> for (loop = 3; loop &lt; 7; loop++) {</font>
+00400 <font class="comment"> if (buf[loop] == ' ')</font>
+00401 <font class="comment"> break;</font>
+00402 <font class="comment"> if ((!isdigit(buf[loop])) &amp;&amp; (buf[loop] != ',') &amp;&amp; (buf[loop] != '-'))</font>
+00403 <font class="comment"> return 0;</font>
+00404 <font class="comment"> }</font>
+00405 <font class="comment">*/</font>
+00406 <font class="keywordflow">return</font> 1;
+00407 }
+00408
+00409
+00410 <font class="keywordtype">char</font> findbreak(<font class="keywordtype">int</font> fp, <font class="keywordtype">long</font> *offset, <font class="keywordtype">int</font> *num1, <font class="keywordtype">int</font> *num2, <font class="keywordtype">int</font> *rangemax, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *size)
+00411 {
+00412 <font class="keywordtype">char</font> buf[8];
+00413 <font class="comment">//char buf2[20];</font>
+00414 <font class="comment">//char ch;</font>
+00415 <font class="keywordtype">char</font> loop=0;
+00416 <font class="keywordtype">long</font> offset2;
+00417 <font class="keywordtype">int</font> ch2, vs2, rm2;
+00418 <font class="keywordtype">bool</font> flag;
+00419 <font class="keywordtype">long</font> versestart = 0;
+00420 <font class="keywordtype">long</font> chapstart = 0;
+00421 <font class="keywordtype">long</font> bookstart = 0;
+00422 <font class="keywordtype">long</font> teststart = 0;
+00423
+00424 memset(buf, <font class="charliteral">' '</font>, 8);
+00425
+00426 <font class="keywordflow">while</font> (1) {
+00427 <font class="comment">//cfile &lt;&lt; "#" &lt;&lt; buf &lt;&lt; "#";</font>
+00428 <font class="comment">//if (lseek(fp, 0, SEEK_CUR) &gt; 2000000)</font>
+00429 <font class="comment">//{</font>
+00430 <font class="comment">// cfile &lt;&lt; lseek(fp, 0, SEEK_CUR) &lt;&lt; "\n";</font>
+00431 <font class="comment">//}</font>
+00432 <font class="keywordflow">if</font> (starttest(buf)) {
+00433 cfile &lt;&lt; <font class="stringliteral">"\n{start of testament}\n"</font>;
+00434 <font class="comment">//chapstart = lseek(fp, 0, SEEK_CUR) - 7;</font>
+00435 teststart = lseek(fp, 0, SEEK_CUR) - 7;
+00436 testoffset = teststart;
+00437 memset(buf, <font class="charliteral">' '</font>, 3);
+00438 flag = <font class="keyword">false</font>;
+00439 <font class="keywordflow">for</font> (loop = 3; loop &lt; 6; loop++) {
+00440 <font class="keywordflow">if</font> (buf[loop]!=<font class="charliteral">'&gt;'</font>)
+00441 flag = <font class="keyword">true</font>;
+00442 <font class="keywordflow">else</font> {
+00443 buf[loop] = 0;
+00444 <font class="keywordflow">break</font>;
+00445 }
+00446 }
+00447 ch2 = *num1;
+00448 vs2 = 1;
+00449 <font class="keywordflow">if</font> (size) {
+00450 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00451 testsize = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>) (lseek(fp, 0, SEEK_END) - teststart-7);
+00452 }
+00453 <font class="keywordflow">else</font> {
+00454 <font class="keywordflow">if</font> (vs2) {
+00455 testsize = (offset2 - teststart - 7);
+00456 }
+00457 }
+00458 lseek(fp, teststart+7, SEEK_SET);
+00459 cfile &lt;&lt; <font class="stringliteral">"\nGot testsize "</font> &lt;&lt; testsize &lt;&lt; <font class="stringliteral">"\n"</font>;
+00460 }
+00461 }
+00462
+00463
+00464 <font class="keywordflow">if</font> (startbook(buf)) {
+00465 cfile &lt;&lt; <font class="stringliteral">"\n{start of book}\n"</font>;
+00466 bookmark++;
+00467 <font class="comment">//chapstart = lseek(fp, 0, SEEK_CUR) - 7;</font>
+00468 bookstart = lseek(fp, 0, SEEK_CUR) - 7;
+00469 bookoffset = bookstart;
+00470 memset(buf, <font class="charliteral">' '</font>, 3);
+00471 flag = <font class="keyword">false</font>;
+00472 <font class="keywordflow">for</font> (loop = 3; loop &lt; 6; loop++) {
+00473 <font class="keywordflow">if</font> (buf[loop]!=<font class="charliteral">'&gt;'</font>)
+00474 flag = <font class="keyword">true</font>;
+00475 <font class="keywordflow">else</font> {
+00476 buf[loop] = 0;
+00477 <font class="keywordflow">break</font>;
+00478 }
+00479 }
+00480 <font class="keywordflow">if</font> (size) {
+00481 ch2 = *num1;
+00482 vs2 = 1;
+00483 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00484 booksize = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>) (lseek(fp, 0, SEEK_END) - bookstart - 7);
+00485 }
+00486 <font class="keywordflow">else</font> {
+00487 <font class="keywordflow">if</font> (vs2) {
+00488 booksize = (offset2 - bookstart - 7);
+00489 }
+00490 }
+00491 lseek(fp, bookstart+7, SEEK_SET);
+00492 cfile &lt;&lt; <font class="stringliteral">"\nGot booksize "</font> &lt;&lt; booksize &lt;&lt; <font class="stringliteral">"\n"</font>;
+00493 }
+00494 }
+00495
+00496 <font class="keywordflow">if</font> (startchap(buf)) {
+00497 cfile &lt;&lt; <font class="stringliteral">"{start of chapter}"</font>;
+00498 chapmark++;
+00499 <font class="comment">//chapstart = lseek(fp, 0, SEEK_CUR) - 7;</font>
+00500 chapstart = lseek(fp, 0, SEEK_CUR) - 7;
+00501 chapoffset = chapstart;
+00502 memset(buf, <font class="charliteral">' '</font>, 3);
+00503 flag = <font class="keyword">false</font>;
+00504 <font class="keywordflow">for</font> (loop = 3; loop &lt; 6; loop++) {
+00505 <font class="keywordflow">if</font> (isdigit(buf[loop]))
+00506 flag = <font class="keyword">true</font>;
+00507 <font class="keywordflow">else</font> {
+00508 buf[loop] = 0;
+00509 <font class="keywordflow">break</font>;
+00510 }
+00511 }
+00512 <font class="keywordflow">if</font> (flag)
+00513 *num1 = atoi(buf);
+00514 <font class="keywordflow">else</font> (*num1)++;
+00515
+00516 <font class="keywordflow">if</font> (size) {
+00517 ch2 = *num1;
+00518 vs2 = 1;
+00519 lseek(fp, chapstart, SEEK_SET);
+00520 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00521 chapsize = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>) (lseek(fp, 0, SEEK_END) - chapstart);
+00522 cfile &lt;&lt; <font class="stringliteral">"getting chapsizeend{"</font> &lt;&lt; chapsize &lt;&lt; <font class="stringliteral">"} = "</font> &lt;&lt; lseek(fp, 0, SEEK_END) &lt;&lt; <font class="stringliteral">" - "</font> &lt;&lt; chapstart &lt;&lt; <font class="stringliteral">"\n"</font>;
+00523 }
+00524 <font class="keywordflow">else</font> {
+00525 <font class="keywordflow">if</font> (vs2) {
+00526 chapsize = (offset2 - chapstart);
+00527 cfile &lt;&lt; <font class="stringliteral">"getting chapsize{"</font> &lt;&lt; chapsize &lt;&lt; <font class="stringliteral">"} = "</font> &lt;&lt; offset2 &lt;&lt; <font class="stringliteral">" - "</font> &lt;&lt; chapstart &lt;&lt; <font class="stringliteral">"\n"</font>;
+00528 }
+00529 }
+00530 lseek(fp, chapstart + 7, SEEK_SET);
+00531 cfile &lt;&lt; <font class="stringliteral">"\nGot chapsize "</font> &lt;&lt; chapsize &lt;&lt; <font class="stringliteral">" loop{"</font> &lt;&lt; (int) loop &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00532 }
+00533 <font class="comment">//return 0;</font>
+00534
+00535 }
+00536 <font class="keywordflow">if</font> (startentry(buf)) {
+00537 <font class="comment">//cfile &lt;&lt; "{start of verse}";</font>
+00538 memset(buf, <font class="charliteral">' '</font>, 3);
+00539 flag = <font class="keyword">false</font>;
+00540 <font class="keywordflow">for</font> (loop = 3; loop &lt; 6; loop++) {
+00541 <font class="keywordflow">if</font> (isdigit(buf[loop]))
+00542 flag = <font class="keyword">true</font>;
+00543 <font class="keywordflow">else</font> {
+00544 buf[loop] = 0;
+00545 <font class="keywordflow">break</font>;
+00546 }
+00547 <font class="keywordflow">if</font> (flag)
+00548 *num2 = atoi(buf);
+00549 <font class="keywordflow">else</font> (*num2)++;
+00550 }
+00551 loop++;
+00552 <font class="comment">/*</font>
+00553 <font class="comment"> if (size)</font>
+00554 <font class="comment"> {</font>
+00555 <font class="comment"> // *offset = lseek(fp, 0, SEEK_CUR) - (7 - loop);</font>
+00556 <font class="comment"> *offset = lseek(fp, 0, SEEK_CUR) - 7;</font>
+00557 <font class="comment"> }</font>
+00558 <font class="comment"> //else *offset = (chapstart) ? chapstart : lseek(fp, 0, SEEK_CUR) - 7;</font>
+00559 <font class="comment"> else *offset = (chapstart) ? chapstart : lseek(fp, 0, SEEK_CUR) - 7;</font>
+00560 <font class="comment"> */</font>
+00561 <font class="comment">/*if (chapstart)</font>
+00562 <font class="comment"> {</font>
+00563 <font class="comment"> chapsize = *offset-chapstart;</font>
+00564 <font class="comment"> }</font>
+00565 <font class="comment"> else</font>
+00566 <font class="comment"> {</font>
+00567 <font class="comment"> chapsize = 0;</font>
+00568 <font class="comment"> }*/</font>
+00569 *offset = lseek(fp, 0, SEEK_CUR) - 7;
+00570 versestart = *offset;
+00571 <font class="keywordflow">if</font> (size) {
+00572 ch2 = *num1;
+00573 vs2 = *num2;
+00574 <font class="keywordflow">if</font> (findbreak(fp, &amp;offset2, &amp;ch2, &amp;vs2, &amp;rm2, 0)) {
+00575 *size = (<font class="keywordtype">unsigned</font> <font class="keywordtype">short</font>) (lseek(fp, 0, SEEK_END) - versestart);
+00576 cfile &lt;&lt; <font class="stringliteral">"getting sizeend{"</font> &lt;&lt; *size &lt;&lt; <font class="stringliteral">"} = "</font> &lt;&lt; lseek(fp, 0, SEEK_END) &lt;&lt; <font class="stringliteral">" - "</font> &lt;&lt; versestart &lt;&lt; <font class="stringliteral">"\n"</font>;
+00577 }
+00578 <font class="keywordflow">else</font> {
+00579 <font class="keywordflow">if</font> (vs2) {
+00580 *size = (offset2 - versestart);
+00581 cfile &lt;&lt; <font class="stringliteral">"getting size{"</font> &lt;&lt; *size &lt;&lt; <font class="stringliteral">"} = "</font> &lt;&lt; offset2 &lt;&lt; <font class="stringliteral">" - "</font> &lt;&lt; versestart &lt;&lt; <font class="stringliteral">"\n"</font>;
+00582 }
+00583 }
+00584 lseek(fp, *offset+1, SEEK_SET);
+00585 }
+00586 <font class="keywordflow">else</font>
+00587 {
+00588 cfile &lt;&lt; <font class="stringliteral">"got offset{"</font> &lt;&lt; *offset &lt;&lt; <font class="stringliteral">"}\n"</font>;
+00589 }
+00590 <font class="keywordflow">return</font> 0;
+00591 }
+00592 <font class="comment">//cfile &lt;&lt; "{ng}";</font>
+00593 <font class="comment">//deadcount++;</font>
+00594 <font class="comment">//if (deadcount==1000) exit(-1);</font>
+00595 <font class="comment">//if (!size)</font>
+00596 <font class="comment">//{</font>
+00597 <font class="comment">// cfile &lt;&lt; "not bound offset{" &lt;&lt; *offset &lt;&lt; "}\n";</font>
+00598 <font class="comment">//}</font>
+00599 memmove(buf, &amp;buf[1], 6);
+00600 <font class="keywordflow">if</font> (read(fp, &amp;buf[6], 1) != 1)
+00601 <font class="keywordflow">return</font> 1;
+00602 }
+00603 }
+00604
+00605
+00606 <font class="keywordtype">void</font> openfiles(<font class="keywordtype">char</font> *fname)
+00607 {
+00608 <font class="preprocessor">#ifndef O_BINARY // O_BINARY is needed in Borland C++ 4.53</font>
+00609 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0 // If it hasn't been defined than we probably</font>
+00610 <font class="preprocessor"></font><font class="preprocessor">#endif // don't need it.</font>
+00611 <font class="preprocessor"></font> <font class="keywordtype">char</font> buf[255];
+00612
+00613 <font class="keywordflow">if</font> ((fp = open(fname, O_RDONLY|O_BINARY)) == -1) {
+00614 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, fname);
+00615 exit(1);
+00616 }
+00617
+00618 sprintf(buf, <font class="stringliteral">"%s.vss"</font>, fname);
+00619 <font class="keywordflow">if</font> ((vfp = open(buf, O_CREAT|O_WRONLY|O_BINARY|O_TRUNC)) == -1) {
+00620 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00621 exit(1);
+00622 }
+00623
+00624 sprintf(buf, <font class="stringliteral">"%s.cps"</font>, fname);
+00625 <font class="keywordflow">if</font> ((cfp = open(buf, O_CREAT|O_WRONLY|O_BINARY|O_TRUNC)) == -1) {
+00626 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00627 exit(1);
+00628 }
+00629
+00630 sprintf(buf, <font class="stringliteral">"%s.bks"</font>, fname);
+00631 <font class="keywordflow">if</font> ((bfp = open(buf, O_CREAT|O_WRONLY|O_BINARY|O_TRUNC)) == -1) {
+00632 fprintf(stderr, <font class="stringliteral">"Couldn't open file: %s\n"</font>, buf);
+00633 exit(1);
+00634 }
+00635 cfile.open(<font class="stringliteral">"gbfidx.log"</font>, ios::out);
+00636 <font class="keywordflow">if</font> (!cfile.is_open())
+00637 {
+00638 cerr &lt;&lt; <font class="stringliteral">"Failed to open log file\n"</font>;
+00639 exit(-1);
+00640 }
+00641 }
+00642
+00643
+00644 <font class="keywordtype">void</font> checkparams(<font class="keywordtype">int</font> argc, <font class="keywordtype">char</font> **argv)
+00645 {
+00646 <font class="keywordflow">if</font> (argc &lt; 2) {
+00647 fprintf(stderr, <font class="stringliteral">"usage: %s &lt;file to process&gt; [nt - for new testmt file]\n"</font>, argv[0]);
+00648 exit(1);
+00649 }
+00650 <font class="keywordflow">if</font> (!strcmp(argv[1], <font class="stringliteral">"nt"</font>))
+00651 key1 = key2 = key3 = <font class="stringliteral">"Matthew 1:1"</font>;
+00652 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strcmp(argv[1], <font class="stringliteral">"ot"</font>))
+00653 {
+00654 key1 = key2 = key3 = <font class="stringliteral">"Genesis 1:1"</font>;
+00655 }
+00656 <font class="keywordflow">else</font>
+00657 {
+00658 cerr &lt;&lt; <font class="stringliteral">"File must be ot or nt\n"</font>;
+00659 exit(-1);
+00660 }
+00661 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/ztext_8cpp-source.html b/doc/api-documentation/html/ztext_8cpp-source.html
new file mode 100644
index 0000000..db219a0
--- /dev/null
+++ b/doc/api-documentation/html/ztext_8cpp-source.html
@@ -0,0 +1,361 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ztext.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ztext.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * ztext.cpp - code for class 'zText'- a module that reads compressed text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.vss</font>
+00004 <font class="comment"> */</font>
+00005
+00006
+00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00010
+00011 <font class="preprocessor">#ifndef __GNUC__</font>
+00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00013 <font class="preprocessor">#else</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00015 <font class="preprocessor">#endif</font>
+00016 <font class="preprocessor"></font>
+00017 <font class="preprocessor">#include &lt;iostream.h&gt;</font>
+00018 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00019 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00020 <font class="comment">//#include &lt;rawverse.h&gt;</font>
+00021 <font class="preprocessor">#include &lt;ztext.h&gt;</font>
+00022 <font class="comment">//#include &lt;zlib.h&gt;</font>
+00023
+00024
+00025 <font class="comment">/******************************************************************************</font>
+00026 <font class="comment"> * zText Constructor - Initializes data for instance of zText</font>
+00027 <font class="comment"> *</font>
+00028 <font class="comment"> * ENT: ipath - path to data files</font>
+00029 <font class="comment"> * iname - Internal name for module</font>
+00030 <font class="comment"> * idesc - Name to display to user for module</font>
+00031 <font class="comment"> * iblockType - verse, chapter, book, etc. of index chunks</font>
+00032 <font class="comment"> * icomp - Compressor object</font>
+00033 <font class="comment"> * idisp - Display object to use for displaying</font>
+00034 <font class="comment"> */</font>
+00035
+00036 zText::zText(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <font class="keywordtype">int</font> iblockType, SWCompress *icomp, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding enc, SWTextDirection dir, SWTextMarkup mark, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang) : zVerse(ipath, -1, iblockType, icomp), <a class="code" href="class_s_w_text.html">SWText</a>(iname, idesc, idisp, enc, dir, mark, ilang)<font class="comment">/*, SWCompress()*/</font>
+00037 {
+00038 blockType = iblockType;
+00039 lastWriteKey = 0;
+00040 }
+00041
+00042
+00043 <font class="comment">/******************************************************************************</font>
+00044 <font class="comment"> * zText Destructor - Cleans up instance of zText</font>
+00045 <font class="comment"> */</font>
+00046
+00047 zText::~zText()
+00048 {
+00049 flushCache();
+00050
+00051 <font class="keywordflow">if</font> (lastWriteKey)
+00052 <font class="keyword">delete</font> lastWriteKey;
+00053 }
+00054
+00055
+00056 <font class="comment">/******************************************************************************</font>
+00057 <font class="comment"> * zText::getRawEntry - Returns the current verse buffer</font>
+00058 <font class="comment"> *</font>
+00059 <font class="comment"> * RET: buffer with verse</font>
+00060 <font class="comment"> */</font>
+00061
+00062 <font class="keywordtype">char</font> *zText::getRawEntry()
+00063 {
+00064 <font class="comment">/*</font>
+00065 <font class="comment"> long start;</font>
+00066 <font class="comment"> unsigned long size;</font>
+00067 <font class="comment"> unsigned long destsize;</font>
+00068 <font class="comment"> char *tmpbuf;</font>
+00069 <font class="comment"> char *dest;</font>
+00070 <font class="comment"> VerseKey *lkey = (VerseKey *) SWModule::key;</font>
+00071 <font class="comment"> char sizebuf[3];</font>
+00072 <font class="comment"></font>
+00073 <font class="comment"> lkey-&gt;Verse(0);</font>
+00074 <font class="comment"> if (chapcache != lkey-&gt;Index()) {</font>
+00075 <font class="comment"> findoffset(lkey-&gt;Testament(), lkey-&gt;Index(), &amp;start, &amp;((unsigned short) size));</font>
+00076 <font class="comment"> gettext(lkey-&gt;Testament(), start, 3, sizebuf);</font>
+00077 <font class="comment"> memcpy(&amp;size, sizebuf, 2);</font>
+00078 <font class="comment"> tmpbuf = new char [ size + 1 ];</font>
+00079 <font class="comment"> gettext(lkey-&gt;Testament(), start + 2, size + 1 , tmpbuf);</font>
+00080 <font class="comment"> //zBuf(&amp;size, tmpbuf);</font>
+00081 <font class="comment"> dest = new char [ (size*4) + 1 ];</font>
+00082 <font class="comment"> uncompress((Bytef *)dest, &amp;destsize, (Bytef *) tmpbuf, size);</font>
+00083 <font class="comment"> chapcache = lkey-&gt;Index();</font>
+00084 <font class="comment"> delete [] tmpbuf;</font>
+00085 <font class="comment"> }</font>
+00086 <font class="comment"></font>
+00087 <font class="comment"> //findoffset(key-&gt;Testament(), key-&gt;Index(), &amp;start, &amp;size);</font>
+00088 <font class="comment"> findoffset(lkey-&gt;Testament(), lkey-&gt;Index(), &amp;start, &amp;((unsigned short) size));</font>
+00089 <font class="comment"></font>
+00090 <font class="comment"> if (versebuf)</font>
+00091 <font class="comment"> delete [] versebuf;</font>
+00092 <font class="comment"> versebuf = new char [ size + 1 ];</font>
+00093 <font class="comment"> //memcpy(versebuf, Buf(), size);</font>
+00094 <font class="comment"> memcpy(versebuf, dest, destsize);</font>
+00095 <font class="comment"> delete [] dest;</font>
+00096 <font class="comment"></font>
+00097 <font class="comment"> preptext(versebuf);</font>
+00098 <font class="comment"></font>
+00099 <font class="comment"> return versebuf;</font>
+00100 <font class="comment">*/</font>
+00101
+00102 <font class="keywordtype">long</font> start = 0;
+00103 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = 0;
+00104 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00105
+00106 <font class="comment">//printf ("zText char *\n");</font>
+00107
+00108 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00109 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00110 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00111 <font class="preprocessor">#endif</font>
+00112 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00113 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00114 <font class="preprocessor"></font> }
+00115 <font class="keywordflow">catch</font> ( ... ) {}
+00116 <font class="preprocessor">#endif</font>
+00117 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00118 <font class="keywordflow">if</font> (!key)
+00119 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00120
+00121 <font class="comment">//printf ("checking cache\n");</font>
+00122 <font class="comment">//printf ("finding offset\n");</font>
+00123 findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00124 entrySize = size; <font class="comment">// support getEntrySize call</font>
+00125
+00126 <font class="comment">//printf ("deleting previous buffer\n");</font>
+00127 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> newsize = (size + 2) * FILTERPAD;
+00128 <font class="keywordflow">if</font> (newsize &gt; entrybufallocsize) {
+00129 <font class="keywordflow">if</font> (entrybuf)
+00130 <font class="keyword">delete</font> [] entrybuf;
+00131 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ newsize ];
+00132 entrybufallocsize = newsize;
+00133 }
+00134 *entrybuf = 0;
+00135
+00136 <font class="comment">//printf ("getting text\n");</font>
+00137 swgettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, (size + 2), entrybuf);
+00138 <font class="comment">//printf ("got text\n");</font>
+00139
+00140 rawFilter(entrybuf, size, key);
+00141
+00142 <font class="comment">//printf ("preparing text\n");</font>
+00143 <font class="keywordflow">if</font> (!isUnicode())
+00144 preptext(entrybuf);
+00145
+00146 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00147 <font class="keyword">delete</font> key;
+00148
+00149 <font class="comment">//printf ("returning text\n");</font>
+00150 <font class="keywordflow">return</font> entrybuf;
+00151
+00152 }
+00153
+00154
+00155 <font class="keywordtype">bool</font> zText::sameBlock(<a class="code" href="class_verse_key.html">VerseKey</a> *k1, <a class="code" href="class_verse_key.html">VerseKey</a> *k2) {
+00156 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>())
+00157 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00158
+00159 <font class="keywordflow">switch</font> (blockType) {
+00160 <font class="keywordflow">case</font> VERSEBLOCKS:
+00161 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a25">Verse</a>())
+00162 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00163 <font class="keywordflow">case</font> CHAPTERBLOCKS:
+00164 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a24">Chapter</a>())
+00165 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00166 <font class="keywordflow">case</font> BOOKBLOCKS:
+00167 <font class="keywordflow">if</font> (k1-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>() != k2-&gt;<a class="code" href="class_verse_key.html#a23">Book</a>())
+00168 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00169 }
+00170 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00171 }
+00172
+00173
+00174 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zText::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
+00175 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00176 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00177 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00178 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00179 <font class="preprocessor">#endif</font>
+00180 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00181 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00182 <font class="preprocessor"></font> }
+00183 <font class="keywordflow">catch</font> ( ... ) {}
+00184 <font class="preprocessor">#endif</font>
+00185 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00186 <font class="keywordflow">if</font> (!key)
+00187 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00188
+00189
+00190 <font class="comment">// see if we've jumped across blocks since last write</font>
+00191 <font class="keywordflow">if</font> (lastWriteKey) {
+00192 <font class="keywordflow">if</font> (!sameBlock(lastWriteKey, key)) {
+00193 flushCache();
+00194 }
+00195 <font class="keyword">delete</font> lastWriteKey;
+00196 }
+00197
+00198 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), inbuf, len);
+00199
+00200 lastWriteKey = (<a class="code" href="class_verse_key.html">VerseKey</a> *)key-&gt;<a class="code" href="class_verse_key.html#a10">clone</a>(); <font class="comment">// must delete</font>
+00201
+00202 <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
+00203 <font class="keyword">delete</font> key;
+00204
+00205 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00206 }
+00207
+00208 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zText::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
+00209 <font class="keywordflow">return</font> setentry(inbuf, 0);
+00210 }
+00211
+00212
+00213 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zText::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
+00214 <a class="code" href="class_verse_key.html">VerseKey</a> *destkey = 0;
+00215 <font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *srckey = 0;
+00216 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00217 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00218 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00219 <font class="preprocessor">#endif</font>
+00220 <font class="preprocessor"></font> destkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00221 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00222 <font class="preprocessor"></font> }
+00223 <font class="keywordflow">catch</font> ( ... ) {}
+00224 <font class="preprocessor">#endif</font>
+00225 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00226 <font class="keywordflow">if</font> (!destkey)
+00227 destkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00228
+00229 <font class="comment">// see if we have a VerseKey * or decendant</font>
+00230 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00231 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00232 <font class="preprocessor">#endif</font>
+00233 <font class="preprocessor"></font> srckey = (<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *) SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, inkey);
+00234 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00235 <font class="preprocessor"></font> }
+00236 <font class="keywordflow">catch</font> ( ... ) {
+00237 }
+00238 <font class="preprocessor">#endif</font>
+00239 <font class="preprocessor"></font> <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
+00240 <font class="keywordflow">if</font> (!srckey)
+00241 srckey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(inkey);
+00242
+00243 linkentry(destkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), destkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), srckey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>());
+00244
+00245 <font class="keywordflow">if</font> (this-&gt;key != destkey) <font class="comment">// free our key if we created a VerseKey</font>
+00246 <font class="keyword">delete</font> destkey;
+00247
+00248 <font class="keywordflow">if</font> (inkey != srckey) <font class="comment">// free our key if we created a VerseKey</font>
+00249 <font class="keyword">delete</font> srckey;
+00250
+00251 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00252 }
+00253
+00254
+00255 <font class="comment">/******************************************************************************</font>
+00256 <font class="comment"> * zFiles::deleteEntry - deletes this entry</font>
+00257 <font class="comment"> *</font>
+00258 <font class="comment"> * RET: *this</font>
+00259 <font class="comment"> */</font>
+00260
+00261 <font class="keywordtype">void</font> zText::deleteEntry() {
+00262
+00263 <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
+00264
+00265 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00266 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00267 <font class="preprocessor">#endif</font>
+00268 <font class="preprocessor"></font> key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
+00269 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00270 <font class="preprocessor"></font> }
+00271 <font class="keywordflow">catch</font> ( ... ) {}
+00272 <font class="preprocessor">#endif</font>
+00273 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!key)
+00274 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(this-&gt;key);
+00275
+00276 settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), <font class="stringliteral">""</font>);
+00277
+00278 <font class="keywordflow">if</font> (key != this-&gt;key)
+00279 <font class="keyword">delete</font> key;
+00280 }
+00281
+00282
+00283 <font class="comment">/******************************************************************************</font>
+00284 <font class="comment"> * zText::operator += - Increments module key a number of entries</font>
+00285 <font class="comment"> *</font>
+00286 <font class="comment"> * ENT: increment - Number of entries to jump forward</font>
+00287 <font class="comment"> *</font>
+00288 <font class="comment"> * RET: *this</font>
+00289 <font class="comment"> */</font>
+00290
+00291 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;zText::operator +=(<font class="keywordtype">int</font> increment)
+00292 {
+00293 <font class="keywordtype">long</font> start;
+00294 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00295 <a class="code" href="class_verse_key.html">VerseKey</a> *tmpkey = 0;
+00296
+00297 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00298 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00299 <font class="preprocessor">#endif</font>
+00300 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00301 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00302 <font class="preprocessor"></font> }
+00303 <font class="keywordflow">catch</font> ( ... ) {}
+00304 <font class="preprocessor">#endif</font>
+00305 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00306 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(key);
+00307
+00308 findoffset(tmpkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), tmpkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
+00309
+00310 <a class="code" href="class_s_w_key.html">SWKey</a> lastgood = *tmpkey;
+00311 <font class="keywordflow">while</font> (increment) {
+00312 <font class="keywordtype">long</font> laststart = start;
+00313 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> lastsize = size;
+00314 <a class="code" href="class_s_w_key.html">SWKey</a> lasttry = *tmpkey;
+00315 (<a class="code" href="class_verse_key.html#a18">increment</a> &gt; 0) ? (*key)++ : (*key)--;
+00316 <font class="keywordflow">if</font> (tmpkey != key)
+00317 <font class="keyword">delete</font> tmpkey;
+00318 tmpkey = 0;
+00319 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00320 <font class="preprocessor"></font> <font class="keywordflow">try</font> {
+00321 <font class="preprocessor">#endif</font>
+00322 <font class="preprocessor"></font> tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
+00323 <font class="preprocessor">#ifndef _WIN32_WCE</font>
+00324 <font class="preprocessor"></font> }
+00325 <font class="keywordflow">catch</font> ( ... ) {}
+00326 <font class="preprocessor">#endif</font>
+00327 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!tmpkey)
+00328 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html#a0">VerseKey</a>(key);
+00329
+00330 <font class="keywordflow">if</font> ((error = key-&gt;Error())) {
+00331 *key = lastgood;
+00332 <font class="keywordflow">break</font>;
+00333 }
+00334 <font class="keywordtype">long</font> index = tmpkey-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
+00335 findoffset(tmpkey-&gt;Testament(), index, &amp;start, &amp;size);
+00336 <font class="keywordflow">if</font> ((((laststart != start) || (lastsize != size))||(!skipConsecutiveLinks)) &amp;&amp; (start &gt;= 0) &amp;&amp; (size)) {
+00337 <a class="code" href="class_verse_key.html#a18">increment</a> += (<a class="code" href="class_verse_key.html#a18">increment</a> &lt; 0) ? 1 : -1;
+00338 lastgood = *tmpkey;
+00339 }
+00340 }
+00341 error = (error) ? KEYERR_OUTOFBOUNDS : 0;
+00342
+00343 <font class="keywordflow">if</font> (tmpkey != key)
+00344 <font class="keyword">delete</font> tmpkey;
+00345
+00346 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
+00347 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/ztext_8h-source.html b/doc/api-documentation/html/ztext_8h-source.html
new file mode 100644
index 0000000..255a71f
--- /dev/null
+++ b/doc/api-documentation/html/ztext_8h-source.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>ztext.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>ztext.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * ztext.h - code for class 'zText'- a module that reads compressed text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.vss</font>
+00004 <font class="comment"> *</font>
+00005 <font class="comment"> * $Id: ztext_8h-source.html,v 1.7 2002/06/20 20:23:10 mgruner Exp $</font>
+00006 <font class="comment"> *</font>
+00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font>
+00008 <font class="comment"> * CrossWire Bible Society</font>
+00009 <font class="comment"> * P. O. Box 2528</font>
+00010 <font class="comment"> * Tempe, AZ 85280-2528</font>
+00011 <font class="comment"> *</font>
+00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
+00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
+00014 <font class="comment"> * Free Software Foundation version 2.</font>
+00015 <font class="comment"> *</font>
+00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
+00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00019 <font class="comment"> * General Public License for more details.</font>
+00020 <font class="comment"> *</font>
+00021 <font class="comment"> */</font>
+00022
+00023 <font class="preprocessor">#ifndef ZTEXT_H</font>
+00024 <font class="preprocessor"></font><font class="preprocessor">#define ZTEXT_H</font>
+00025 <font class="preprocessor"></font>
+00026 <font class="preprocessor">#include &lt;zverse.h&gt;</font>
+00027 <font class="preprocessor">#include &lt;swtext.h&gt;</font>
+00028 <font class="comment">//#include &lt;swcomprs.h&gt;</font>
+00029
+00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00031
+00032 <font class="comment">/*** SWModule implementation for compressed modules</font>
+00033 <font class="comment">* This class handles compressed modules.</font>
+00034 <font class="comment">* It should not be used in frontends, unless you are doing very special things.</font>
+00035 <font class="comment">*/</font>
+00036 <font class="keyword">class </font>SWDLLEXPORT zText:<font class="keyword">public</font> zVerse, <font class="keyword">public</font> <a class="code" href="class_s_w_text.html">SWText</a> {
+00037 <a class="code" href="class_verse_key.html">VerseKey</a> *lastWriteKey;
+00038 <font class="keywordtype">bool</font> sameBlock (<a class="code" href="class_verse_key.html">VerseKey</a> * lastWriteKey, <a class="code" href="class_verse_key.html">VerseKey</a> * key);
+00039 <font class="keywordtype">int</font> blockType;
+00040 <font class="keyword">public</font>:
+00041
+00042
+00043 zText(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname = 0, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc =
+00044 0, <font class="keywordtype">int</font> blockType = CHAPTERBLOCKS, SWCompress * icomp =
+00045 0, <a class="code" href="class_s_w_display.html">SWDisplay</a> * idisp = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN,
+00046 <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang = 0);
+00047 <font class="keyword">virtual</font> ~zText ();
+00048 <font class="keyword">virtual</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_module.html#a28">getRawEntry</a>();
+00049
+00050 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a37">operator += </a>(<font class="keywordtype">int</font> increment);
+00051 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a36">operator -= </a>(<font class="keywordtype">int</font> decrement) { <font class="keywordflow">return</font> this-&gt;<a class="code" href="class_s_w_module.html#a37">operator += </a>(-decrement); }
+00052
+00053 <font class="comment">// write interface ----------------------------</font>
+00054 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_module.html#a31">isWritable</a> () { <font class="keywordflow">return</font> ((idxfp[0]-&gt;getFd() &gt; 0) &amp;&amp; ((idxfp[0]-&gt;mode &amp; O_RDWR) == O_RDWR)); }
+00055 <font class="keyword">static</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_module.html#d1">createModule</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> blockBound) {
+00056 <font class="keywordflow">return</font> zVerse::createModule (path, blockBound);
+00057 }
+00058
+00059 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a32">setentry</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len); <font class="comment">// Modify current module entry</font>
+00060 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf); <font class="comment">// Modify current module entry</font>
+00061 <font class="keyword">virtual</font> <a class="code" href="class_s_w_module.html">SWModule</a> &amp; <a class="code" href="class_s_w_module.html#a33">operator &lt;&lt; </a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * linkKey); <font class="comment">// Link current module entry to other module entry</font>
+00062 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_module.html#a35">deleteEntry</a> (); <font class="comment">// Delete current module entry</font>
+00063 <font class="comment">// end write interface ------------------------</font>
+00064
+00065 <font class="comment">// swcacher interface ----------------------</font>
+00066 <font class="keyword">virtual</font> <font class="keywordtype">void</font> flush() { flushCache(); }
+00067 <font class="comment">// end swcacher interface ----------------------</font>
+00068 };
+00069
+00070 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zutil_8h-source.html b/doc/api-documentation/html/zutil_8h-source.html
new file mode 100644
index 0000000..58ed594
--- /dev/null
+++ b/doc/api-documentation/html/zutil_8h-source.html
@@ -0,0 +1,234 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zutil.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zutil.h</h1><div class="fragment"><pre>00001 <font class="comment">/* zutil.h -- internal interface and configuration of the compression library</font>
+00002 <font class="comment"> * Copyright (C) 1995-1998 Jean-loup Gailly.</font>
+00003 <font class="comment"> * For conditions of distribution and use, see copyright notice in zlib.h</font>
+00004 <font class="comment"> */</font>
+00005
+00006 <font class="comment">/* WARNING: this file should *not* be used by applications. It is</font>
+00007 <font class="comment"> part of the implementation of the compression library and is</font>
+00008 <font class="comment"> subject to change. Applications should only use zlib.h.</font>
+00009 <font class="comment"> */</font>
+00010
+00011 <font class="comment">/* @(#) $Id: zutil_8h-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $ */</font>
+00012
+00013 <font class="preprocessor">#ifndef _Z_UTIL_H</font>
+00014 <font class="preprocessor"></font><font class="preprocessor">#define _Z_UTIL_H</font>
+00015 <font class="preprocessor"></font>
+00016 <font class="preprocessor">#include "zlib.h"</font>
+00017
+00018 <font class="preprocessor">#ifdef STDC</font>
+00019 <font class="preprocessor"></font><font class="preprocessor"># include &lt;stddef.h&gt;</font>
+00020 <font class="preprocessor"># include &lt;string.h&gt;</font>
+00021 <font class="preprocessor"># include &lt;stdlib.h&gt;</font>
+00022 <font class="preprocessor">#endif</font>
+00023 <font class="preprocessor"></font><font class="preprocessor">#ifdef NO_ERRNO_H</font>
+00024 <font class="preprocessor"></font> <font class="keyword">extern</font> <font class="keywordtype">int</font> errno;
+00025 <font class="preprocessor">#else</font>
+00026 <font class="preprocessor"></font><font class="preprocessor"># include &lt;errno.h&gt;</font>
+00027 <font class="preprocessor">#endif</font>
+00028 <font class="preprocessor"></font>
+00029 <font class="preprocessor">#ifndef local</font>
+00030 <font class="preprocessor"></font><font class="preprocessor"># define local static</font>
+00031 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00032 <font class="preprocessor"></font><font class="comment">/* compile with -Dlocal if your debugger can't find static symbols */</font>
+00033
+00034 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> uch;
+00035 <font class="keyword">typedef</font> uch FAR uchf;
+00036 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> ush;
+00037 <font class="keyword">typedef</font> ush FAR ushf;
+00038 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulg;
+00039
+00040 <font class="keyword">extern</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *z_errmsg[10]; <font class="comment">/* indexed by 2-zlib_error */</font>
+00041 <font class="comment">/* (size given to avoid silly warnings with Visual C++) */</font>
+00042
+00043 <font class="preprocessor">#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]</font>
+00044 <font class="preprocessor"></font>
+00045 <font class="preprocessor">#define ERR_RETURN(strm,err) \</font>
+00046 <font class="preprocessor"> return (strm-&gt;msg = (char*)ERR_MSG(err), (err))</font>
+00047 <font class="preprocessor"></font><font class="comment">/* To be used only when the state is known to be valid */</font>
+00048
+00049 <font class="comment">/* common constants */</font>
+00050
+00051 <font class="preprocessor">#ifndef DEF_WBITS</font>
+00052 <font class="preprocessor"></font><font class="preprocessor"># define DEF_WBITS MAX_WBITS</font>
+00053 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00054 <font class="preprocessor"></font><font class="comment">/* default windowBits for decompression. MAX_WBITS is for compression only */</font>
+00055
+00056 <font class="preprocessor">#if MAX_MEM_LEVEL &gt;= 8</font>
+00057 <font class="preprocessor"></font><font class="preprocessor"># define DEF_MEM_LEVEL 8</font>
+00058 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00059 <font class="preprocessor"></font><font class="preprocessor"># define DEF_MEM_LEVEL MAX_MEM_LEVEL</font>
+00060 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00061 <font class="preprocessor"></font><font class="comment">/* default memLevel */</font>
+00062
+00063 <font class="preprocessor">#define STORED_BLOCK 0</font>
+00064 <font class="preprocessor"></font><font class="preprocessor">#define STATIC_TREES 1</font>
+00065 <font class="preprocessor"></font><font class="preprocessor">#define DYN_TREES 2</font>
+00066 <font class="preprocessor"></font><font class="comment">/* The three kinds of block type */</font>
+00067
+00068 <font class="preprocessor">#define MIN_MATCH 3</font>
+00069 <font class="preprocessor"></font><font class="preprocessor">#define MAX_MATCH 258</font>
+00070 <font class="preprocessor"></font><font class="comment">/* The minimum and maximum match lengths */</font>
+00071
+00072 <font class="preprocessor">#define PRESET_DICT 0x20 </font><font class="comment">/* preset dictionary flag in zlib header */</font>
+00073
+00074 <font class="comment">/* target dependencies */</font>
+00075
+00076 <font class="preprocessor">#ifdef MSDOS</font>
+00077 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x00</font>
+00078 <font class="preprocessor"></font><font class="preprocessor"># if defined(__TURBOC__) || defined(__BORLANDC__)</font>
+00079 <font class="preprocessor"></font><font class="preprocessor"># if(__STDC__ == 1) &amp;&amp; (defined(__LARGE__) || defined(__COMPACT__))</font>
+00080 <font class="preprocessor"></font> <font class="comment">/* Allow compilation with ANSI keywords only enabled */</font>
+00081 <font class="keywordtype">void</font> _Cdecl farfree( <font class="keywordtype">void</font> *block );
+00082 <font class="keywordtype">void</font> *_Cdecl farmalloc( <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> nbytes );
+00083 <font class="preprocessor"># else</font>
+00084 <font class="preprocessor"></font><font class="preprocessor"># include &lt;alloc.h&gt;</font>
+00085 <font class="preprocessor"># endif</font>
+00086 <font class="preprocessor"></font><font class="preprocessor"># else </font><font class="comment">/* MSC or DJGPP */</font>
+00087 <font class="preprocessor"># include &lt;malloc.h&gt;</font>
+00088 <font class="preprocessor"># endif</font>
+00089 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00090 <font class="preprocessor"></font>
+00091 <font class="preprocessor">#ifdef OS2</font>
+00092 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x06</font>
+00093 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00094 <font class="preprocessor"></font>
+00095 <font class="preprocessor">#ifdef WIN32 </font><font class="comment">/* Window 95 &amp; Windows NT */</font>
+00096 <font class="preprocessor"># define OS_CODE 0x0b</font>
+00097 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00098 <font class="preprocessor"></font>
+00099 <font class="preprocessor">#if defined(VAXC) || defined(VMS)</font>
+00100 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x02</font>
+00101 <font class="preprocessor"></font><font class="preprocessor"># define F_OPEN(name, mode) \</font>
+00102 <font class="preprocessor"> fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")</font>
+00103 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00104 <font class="preprocessor"></font>
+00105 <font class="preprocessor">#ifdef AMIGA</font>
+00106 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x01</font>
+00107 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00108 <font class="preprocessor"></font>
+00109 <font class="preprocessor">#if defined(ATARI) || defined(atarist)</font>
+00110 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x05</font>
+00111 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00112 <font class="preprocessor"></font>
+00113 <font class="preprocessor">#if defined(MACOS) || defined(TARGET_OS_MAC)</font>
+00114 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x07</font>
+00115 <font class="preprocessor"></font><font class="preprocessor"># if defined(__MWERKS__) &amp;&amp; __dest_os != __be_os &amp;&amp; __dest_os != __win32_os</font>
+00116 <font class="preprocessor"></font><font class="preprocessor"># include &lt;unix.h&gt;</font> <font class="comment">/* for fdopen */</font>
+00117 <font class="preprocessor"># else</font>
+00118 <font class="preprocessor"></font><font class="preprocessor"># ifndef fdopen</font>
+00119 <font class="preprocessor"></font><font class="preprocessor"># define fdopen(fd,mode) NULL </font><font class="comment">/* No fdopen() */</font>
+00120 <font class="preprocessor"># endif</font>
+00121 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00122 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00123 <font class="preprocessor"></font>
+00124 <font class="preprocessor">#ifdef __50SERIES </font><font class="comment">/* Prime/PRIMOS */</font>
+00125 <font class="preprocessor"># define OS_CODE 0x0F</font>
+00126 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00127 <font class="preprocessor"></font>
+00128 <font class="preprocessor">#ifdef TOPS20</font>
+00129 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x0a</font>
+00130 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00131 <font class="preprocessor"></font>
+00132 <font class="preprocessor">#if defined(_BEOS_) || defined(RISCOS)</font>
+00133 <font class="preprocessor"></font><font class="preprocessor"># define fdopen(fd,mode) NULL </font><font class="comment">/* No fdopen() */</font>
+00134 <font class="preprocessor">#endif</font>
+00135 <font class="preprocessor"></font>
+00136 <font class="preprocessor">#if (defined(_MSC_VER) &amp;&amp; (_MSC_VER &gt; 600))</font>
+00137 <font class="preprocessor"></font><font class="preprocessor"># define fdopen(fd,type) _fdopen(fd,type)</font>
+00138 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00139 <font class="preprocessor"></font>
+00140
+00141 <font class="comment">/* Common defaults */</font>
+00142
+00143 <font class="preprocessor">#ifndef OS_CODE</font>
+00144 <font class="preprocessor"></font><font class="preprocessor"># define OS_CODE 0x03 </font><font class="comment">/* assume Unix */</font>
+00145 <font class="preprocessor">#endif</font>
+00146 <font class="preprocessor"></font>
+00147 <font class="preprocessor">#ifndef F_OPEN</font>
+00148 <font class="preprocessor"></font><font class="preprocessor"># define F_OPEN(name, mode) fopen((name), (mode))</font>
+00149 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00150 <font class="preprocessor"></font>
+00151 <font class="comment">/* functions */</font>
+00152
+00153 <font class="preprocessor">#ifdef HAVE_STRERROR</font>
+00154 <font class="preprocessor"></font> <font class="keyword">extern</font> <font class="keywordtype">char</font> *strerror OF((<font class="keywordtype">int</font>));
+00155 <font class="preprocessor"># define zstrerror(errnum) strerror(errnum)</font>
+00156 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00157 <font class="preprocessor"></font><font class="preprocessor"># define zstrerror(errnum) ""</font>
+00158 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00159 <font class="preprocessor"></font>
+00160 <font class="preprocessor">#if defined(pyr)</font>
+00161 <font class="preprocessor"></font><font class="preprocessor"># define NO_MEMCPY</font>
+00162 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00163 <font class="preprocessor"></font><font class="preprocessor">#if defined(SMALL_MEDIUM) &amp;&amp; !defined(_MSC_VER) &amp;&amp; !defined(__SC__)</font>
+00164 <font class="preprocessor"></font> <font class="comment">/* Use our own functions for small and medium model with MSC &lt;= 5.0.</font>
+00165 <font class="comment"> * You may have to use the same strategy for Borland C (untested).</font>
+00166 <font class="comment"> * The __SC__ check is for Symantec.</font>
+00167 <font class="comment"> */</font>
+00168 <font class="preprocessor"># define NO_MEMCPY</font>
+00169 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00170 <font class="preprocessor"></font><font class="preprocessor">#if defined(STDC) &amp;&amp; !defined(HAVE_MEMCPY) &amp;&amp; !defined(NO_MEMCPY)</font>
+00171 <font class="preprocessor"></font><font class="preprocessor"># define HAVE_MEMCPY</font>
+00172 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00173 <font class="preprocessor"></font><font class="preprocessor">#ifdef HAVE_MEMCPY</font>
+00174 <font class="preprocessor"></font><font class="preprocessor"># ifdef SMALL_MEDIUM </font><font class="comment">/* MSDOS small or medium model */</font>
+00175 <font class="preprocessor"># define zmemcpy _fmemcpy</font>
+00176 <font class="preprocessor"></font><font class="preprocessor"># define zmemcmp _fmemcmp</font>
+00177 <font class="preprocessor"></font><font class="preprocessor"># define zmemzero(dest, len) _fmemset(dest, 0, len)</font>
+00178 <font class="preprocessor"></font><font class="preprocessor"># else</font>
+00179 <font class="preprocessor"></font><font class="preprocessor"># define zmemcpy memcpy</font>
+00180 <font class="preprocessor"></font><font class="preprocessor"># define zmemcmp memcmp</font>
+00181 <font class="preprocessor"></font><font class="preprocessor"># define zmemzero(dest, len) memset(dest, 0, len)</font>
+00182 <font class="preprocessor"></font><font class="preprocessor"># endif</font>
+00183 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00184 <font class="preprocessor"></font> <font class="keyword">extern</font> <font class="keywordtype">void</font> zmemcpy OF((Bytef* dest, <font class="keyword">const</font> Bytef* source, uInt len));
+00185 <font class="keyword">extern</font> <font class="keywordtype">int</font> zmemcmp OF((<font class="keyword">const</font> Bytef* s1, <font class="keyword">const</font> Bytef* s2, uInt len));
+00186 <font class="keyword">extern</font> <font class="keywordtype">void</font> zmemzero OF((Bytef* dest, uInt len));
+00187 <font class="preprocessor">#endif</font>
+00188 <font class="preprocessor"></font>
+00189 <font class="comment">/* Diagnostic functions */</font>
+00190 <font class="preprocessor">#ifdef DEBUG</font>
+00191 <font class="preprocessor"></font><font class="preprocessor"># include &lt;stdio.h&gt;</font>
+00192 <font class="keyword">extern</font> <font class="keywordtype">int</font> z_verbose;
+00193 <font class="keyword">extern</font> <font class="keywordtype">void</font> z_error OF((<font class="keywordtype">char</font> *m));
+00194 <font class="preprocessor"># define Assert(cond,msg) {if(!(cond)) z_error(msg);}</font>
+00195 <font class="preprocessor"></font><font class="preprocessor"># define Trace(x) {if (z_verbose&gt;=0) fprintf x ;}</font>
+00196 <font class="preprocessor"></font><font class="preprocessor"># define Tracev(x) {if (z_verbose&gt;0) fprintf x ;}</font>
+00197 <font class="preprocessor"></font><font class="preprocessor"># define Tracevv(x) {if (z_verbose&gt;1) fprintf x ;}</font>
+00198 <font class="preprocessor"></font><font class="preprocessor"># define Tracec(c,x) {if (z_verbose&gt;0 &amp;&amp; (c)) fprintf x ;}</font>
+00199 <font class="preprocessor"></font><font class="preprocessor"># define Tracecv(c,x) {if (z_verbose&gt;1 &amp;&amp; (c)) fprintf x ;}</font>
+00200 <font class="preprocessor"></font><font class="preprocessor">#else</font>
+00201 <font class="preprocessor"></font><font class="preprocessor"># define Assert(cond,msg)</font>
+00202 <font class="preprocessor"></font><font class="preprocessor"># define Trace(x)</font>
+00203 <font class="preprocessor"></font><font class="preprocessor"># define Tracev(x)</font>
+00204 <font class="preprocessor"></font><font class="preprocessor"># define Tracevv(x)</font>
+00205 <font class="preprocessor"></font><font class="preprocessor"># define Tracec(c,x)</font>
+00206 <font class="preprocessor"></font><font class="preprocessor"># define Tracecv(c,x)</font>
+00207 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00208 <font class="preprocessor"></font>
+00209
+00210 <font class="keyword">typedef</font> uLong (ZEXPORT *check_func) OF((uLong check, <font class="keyword">const</font> Bytef *buf,
+00211 uInt len));
+00212 voidpf zcalloc OF((voidpf opaque, <font class="keywordtype">unsigned</font> items, <font class="keywordtype">unsigned</font> size));
+00213 <font class="keywordtype">void</font> zcfree OF((voidpf opaque, voidpf ptr));
+00214
+00215 <font class="preprocessor">#define ZALLOC(strm, items, size) \</font>
+00216 <font class="preprocessor"> (*((strm)-&gt;zalloc))((strm)-&gt;opaque, (items), (size))</font>
+00217 <font class="preprocessor"></font><font class="preprocessor">#define ZFREE(strm, addr) (*((strm)-&gt;zfree))((strm)-&gt;opaque, (voidpf)(addr))</font>
+00218 <font class="preprocessor"></font><font class="preprocessor">#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}</font>
+00219 <font class="preprocessor"></font>
+00220 <font class="preprocessor">#endif </font><font class="comment">/* _Z_UTIL_H */</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zverse_8cpp-source.html b/doc/api-documentation/html/zverse_8cpp-source.html
new file mode 100644
index 0000000..737b9db
--- /dev/null
+++ b/doc/api-documentation/html/zverse_8cpp-source.html
@@ -0,0 +1,529 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zverse.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zverse.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * zverse.h - code for class 'zVerse'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class VerseKey for compressed modules</font>
+00006 <font class="comment"> */</font>
+00007
+00008
+00009 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
+00010 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
+00011 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;errno.h&gt;</font>
+00013 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
+00014
+00015 <font class="preprocessor">#ifndef __GNUC__</font>
+00016 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
+00017 <font class="preprocessor">#else</font>
+00018 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
+00019 <font class="preprocessor">#endif</font>
+00020 <font class="preprocessor"></font>
+00021 <font class="preprocessor">#include &lt;string.h&gt;</font>
+00022 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
+00023 <font class="preprocessor">#include &lt;versekey.h&gt;</font>
+00024 <font class="preprocessor">#include &lt;zverse.h&gt;</font>
+00025 <font class="preprocessor">#include &lt;sysdata.h&gt;</font>
+00026
+00027
+00028 <font class="preprocessor">#ifndef O_BINARY</font>
+00029 <font class="preprocessor"></font><font class="preprocessor">#define O_BINARY 0</font>
+00030 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
+00031 <font class="preprocessor"></font>
+00032
+00033 <font class="comment">/******************************************************************************</font>
+00034 <font class="comment"> * zVerse Statics</font>
+00035 <font class="comment"> */</font>
+00036
+00037 <font class="keywordtype">int</font> zVerse::instance = 0;
+00038
+00039 <font class="keyword">const</font> <font class="keywordtype">char</font> zVerse::uniqueIndexID[] = {<font class="charliteral">'X'</font>, <font class="charliteral">'r'</font>, <font class="charliteral">'v'</font>, <font class="charliteral">'c'</font>, <font class="charliteral">'b'</font>};
+00040
+00041 <font class="comment">/******************************************************************************</font>
+00042 <font class="comment"> * zVerse Constructor - Initializes data for instance of zVerse</font>
+00043 <font class="comment"> *</font>
+00044 <font class="comment"> * ENT: ipath - path of the directory where data and index files are located.</font>
+00045 <font class="comment"> * be sure to include the trailing separator (e.g. '/' or '\')</font>
+00046 <font class="comment"> * (e.g. 'modules/texts/rawtext/webster/')</font>
+00047 <font class="comment"> * fileMode - open mode for the files (O_RDONLY, etc.)</font>
+00048 <font class="comment"> * blockType - verse, chapter, book, etc.</font>
+00049 <font class="comment"> */</font>
+00050
+00051 zVerse::zVerse(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode, <font class="keywordtype">int</font> blockType, SWCompress *icomp)
+00052 {
+00053 <font class="keywordtype">char</font> buf[127];
+00054
+00055 nl = <font class="charliteral">'\n'</font>;
+00056 path = 0;
+00057 cacheBufIdx = -1;
+00058 cacheTestament = 0;
+00059 cacheBuf = 0;
+00060 dirtyCache = <font class="keyword">false</font>;
+00061 stdstr(&amp;path, ipath);
+00062
+00063 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00064 path[strlen(path)-1] = 0;
+00065
+00066 compressor = (icomp) ? icomp : <font class="keyword">new</font> SWCompress();
+00067
+00068 <font class="keywordflow">if</font> (fileMode == -1) { <font class="comment">// try read/write if possible</font>
+00069 fileMode = O_RDWR;
+00070 }
+00071
+00072 sprintf(buf, <font class="stringliteral">"%s/ot.%czs"</font>, path, uniqueIndexID[blockType]);
+00073 idxfp[0] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00074
+00075 sprintf(buf, <font class="stringliteral">"%s/nt.%czs"</font>, path, uniqueIndexID[blockType]);
+00076 idxfp[1] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00077
+00078 sprintf(buf, <font class="stringliteral">"%s/ot.%czz"</font>, path, uniqueIndexID[blockType]);
+00079 textfp[0] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00080
+00081 sprintf(buf, <font class="stringliteral">"%s/nt.%czz"</font>, path, uniqueIndexID[blockType]);
+00082 textfp[1] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00083
+00084 sprintf(buf, <font class="stringliteral">"%s/ot.%czv"</font>, path, uniqueIndexID[blockType]);
+00085 compfp[0] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00086
+00087 sprintf(buf, <font class="stringliteral">"%s/nt.%czv"</font>, path, uniqueIndexID[blockType]);
+00088 compfp[1] = FileMgr::systemFileMgr.open(buf, fileMode|O_BINARY, <font class="keyword">true</font>);
+00089
+00090 <a class="code" href="class_verse_key.html#r3">instance</a>++;
+00091 }
+00092
+00093
+00094 <font class="comment">/******************************************************************************</font>
+00095 <font class="comment"> * zVerse Destructor - Cleans up instance of zVerse</font>
+00096 <font class="comment"> */</font>
+00097
+00098 zVerse::~zVerse()
+00099 {
+00100 <font class="keywordtype">int</font> loop1;
+00101
+00102 <font class="keywordflow">if</font> (cacheBuf) {
+00103 flushCache();
+00104 free(cacheBuf);
+00105 }
+00106
+00107 <font class="keywordflow">if</font> (path)
+00108 <font class="keyword">delete</font> [] path;
+00109
+00110 <font class="keywordflow">if</font> (compressor)
+00111 <font class="keyword">delete</font> compressor;
+00112
+00113 --<a class="code" href="class_verse_key.html#r3">instance</a>;
+00114
+00115 <font class="keywordflow">for</font> (loop1 = 0; loop1 &lt; 2; loop1++) {
+00116 FileMgr::systemFileMgr.close(idxfp[loop1]);
+00117 FileMgr::systemFileMgr.close(textfp[loop1]);
+00118 FileMgr::systemFileMgr.close(compfp[loop1]);
+00119 }
+00120 }
+00121
+00122
+00123 <font class="comment">/******************************************************************************</font>
+00124 <font class="comment"> * zVerse::findoffset - Finds the offset of the key verse from the indexes</font>
+00125 <font class="comment"> *</font>
+00126 <font class="comment"> *</font>
+00127 <font class="comment"> *</font>
+00128 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00129 <font class="comment"> * book - book to find (0 - testament introduction)</font>
+00130 <font class="comment"> * chapter - chapter to find (0 - book introduction)</font>
+00131 <font class="comment"> * verse - verse to find (0 - chapter introduction)</font>
+00132 <font class="comment"> * start - address to store the starting offset</font>
+00133 <font class="comment"> * size - address to store the size of the entry</font>
+00134 <font class="comment"> */</font>
+00135
+00136 <font class="keywordtype">void</font> zVerse::findoffset(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keywordtype">long</font> *start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *size)
+00137 {
+00138 <font class="comment">// set start to offset in</font>
+00139 <font class="comment">// set size to</font>
+00140 <font class="comment">// set</font>
+00141 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulBuffNum=0; <font class="comment">// buffer number</font>
+00142 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulVerseStart=0; <font class="comment">// verse offset within buffer</font>
+00143 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> usVerseSize=0; <font class="comment">// verse size</font>
+00144 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulCompOffset=0; <font class="comment">// compressed buffer start</font>
+00145 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulCompSize=0; <font class="comment">// buffer size compressed</font>
+00146 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> ulUnCompSize=0; <font class="comment">// buffer size uncompressed</font>
+00147 <font class="keywordtype">char</font> *pcCompText=NULL; <font class="comment">// compressed text</font>
+00148
+00149 *start = *size = 0;
+00150 <font class="comment">//printf ("Finding offset %ld\n", idxoff);</font>
+00151 idxoff *= 10;
+00152 <font class="keywordflow">if</font> (!testmt) {
+00153 testmt = ((idxfp[0]) ? 1:2);
+00154 }
+00155
+00156 <font class="comment">// assert we have and valid file descriptor</font>
+00157 <font class="keywordflow">if</font> (compfp[testmt-1]-&gt;getFd() &lt; 1)
+00158 <font class="keywordflow">return</font>;
+00159
+00160 <font class="keywordtype">long</font> newOffset = lseek(compfp[testmt-1]-&gt;getFd(), idxoff, SEEK_SET);
+00161 <font class="keywordflow">if</font> (newOffset == idxoff) {
+00162 <font class="keywordflow">if</font> (read(compfp[testmt-1]-&gt;getFd(), &amp;ulBuffNum, 4) != 4) {
+00163 printf (<font class="stringliteral">"Error reading ulBuffNum\n"</font>);
+00164 <font class="keywordflow">return</font>;
+00165 }
+00166 }
+00167 <font class="keywordflow">else</font> <font class="keywordflow">return</font>;
+00168
+00169 ulBuffNum = swordtoarch32(ulBuffNum);
+00170
+00171 <font class="keywordflow">if</font> (read(compfp[testmt-1]-&gt;getFd(), &amp;ulVerseStart, 4) &lt; 2)
+00172 {
+00173 printf (<font class="stringliteral">"Error reading ulVerseStart\n"</font>);
+00174 <font class="keywordflow">return</font>;
+00175 }
+00176 <font class="keywordflow">if</font> (read(compfp[testmt-1]-&gt;getFd(), &amp;usVerseSize, 2) &lt; 2)
+00177 {
+00178 printf (<font class="stringliteral">"Error reading usVerseSize\n"</font>);
+00179 <font class="keywordflow">return</font>;
+00180 }
+00181
+00182 *start = swordtoarch32(ulVerseStart);
+00183 *size = swordtoarch16(usVerseSize);
+00184
+00185 <font class="keywordflow">if</font> (*size) {
+00186 <font class="keywordflow">if</font> (((long) ulBuffNum == cacheBufIdx) &amp;&amp; (testmt == cacheTestament) &amp;&amp; (cacheBuf)) {
+00187 <font class="comment">// have the text buffered</font>
+00188 <font class="keywordflow">return</font>;
+00189 }
+00190
+00191 <font class="comment">//printf ("Got buffer number{%ld} versestart{%ld} versesize{%d}\n", ulBuffNum, ulVerseStart, usVerseSize);</font>
+00192
+00193
+00194 <font class="keywordflow">if</font> (lseek(idxfp[testmt-1]-&gt;getFd(), ulBuffNum*12, SEEK_SET)!=(long) ulBuffNum*12)
+00195 {
+00196 printf (<font class="stringliteral">"Error seeking compressed file index\n"</font>);
+00197 <font class="keywordflow">return</font>;
+00198 }
+00199 <font class="keywordflow">if</font> (read(idxfp[testmt-1]-&gt;getFd(), &amp;ulCompOffset, 4)&lt;4)
+00200 {
+00201 printf (<font class="stringliteral">"Error reading ulCompOffset\n"</font>);
+00202 <font class="keywordflow">return</font>;
+00203 }
+00204 <font class="keywordflow">if</font> (read(idxfp[testmt-1]-&gt;getFd(), &amp;ulCompSize, 4)&lt;4)
+00205 {
+00206 printf (<font class="stringliteral">"Error reading ulCompSize\n"</font>);
+00207 <font class="keywordflow">return</font>;
+00208 }
+00209 <font class="keywordflow">if</font> (read(idxfp[testmt-1]-&gt;getFd(), &amp;ulUnCompSize, 4)&lt;4)
+00210 {
+00211 printf (<font class="stringliteral">"Error reading ulUnCompSize\n"</font>);
+00212 <font class="keywordflow">return</font>;
+00213 }
+00214
+00215 ulCompOffset = swordtoarch32(ulCompOffset);
+00216 ulCompSize = swordtoarch32(ulCompSize);
+00217 ulUnCompSize = swordtoarch32(ulUnCompSize);
+00218
+00219 <font class="keywordflow">if</font> (lseek(textfp[testmt-1]-&gt;getFd(), ulCompOffset, SEEK_SET)!=(long)ulCompOffset)
+00220 {
+00221 printf (<font class="stringliteral">"Error: could not seek to right place in compressed text\n"</font>);
+00222 <font class="keywordflow">return</font>;
+00223 }
+00224 pcCompText = <font class="keyword">new</font> <font class="keywordtype">char</font>[ulCompSize];
+00225
+00226 <font class="keywordflow">if</font> (read(textfp[testmt-1]-&gt;getFd(), pcCompText, ulCompSize)&lt;(long)ulCompSize)
+00227 {
+00228 printf (<font class="stringliteral">"Error reading compressed text\n"</font>);
+00229 <font class="keywordflow">return</font>;
+00230 }
+00231 compressor-&gt;zBuf(&amp;ulCompSize, pcCompText);
+00232
+00233 <font class="keywordflow">if</font> (cacheBuf) {
+00234 flushCache();
+00235 free(cacheBuf);
+00236 }
+00237
+00238 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> len = 0;
+00239 compressor-&gt;Buf(0, &amp;len);
+00240 cacheBuf = (<font class="keywordtype">char</font> *)calloc(len + 1, 1);
+00241 memcpy(cacheBuf, compressor-&gt;Buf(), len);
+00242
+00243 cacheTestament = testmt;
+00244 cacheBufIdx = ulBuffNum;
+00245 }
+00246 }
+00247
+00248
+00249 <font class="comment">/******************************************************************************</font>
+00250 <font class="comment"> * zVerse::swgettext - gets text at a given offset</font>
+00251 <font class="comment"> *</font>
+00252 <font class="comment"> * ENT: testmt - testament file to search in (0 - Old; 1 - New)</font>
+00253 <font class="comment"> * start - starting offset where the text is located in the file</font>
+00254 <font class="comment"> * size - size of text entry + 1 (null)</font>
+00255 <font class="comment"> * buf - buffer to store text</font>
+00256 <font class="comment"> *</font>
+00257 <font class="comment"> */</font>
+00258
+00259 <font class="keywordtype">void</font> zVerse::swgettext(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size, <font class="keywordtype">char</font> *inbuf)
+00260 {
+00261 memset(inbuf, 0, size);
+00262 <font class="keywordflow">if</font> (size &gt; 2) {
+00263 strncpy(inbuf, &amp;(cacheBuf[start]), size-2);
+00264 }
+00265 }
+00266
+00267
+00268 <font class="comment">/******************************************************************************</font>
+00269 <font class="comment"> * zVerse::settext - Sets text for current offset</font>
+00270 <font class="comment"> *</font>
+00271 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00272 <font class="comment"> * idxoff - offset into .vss</font>
+00273 <font class="comment"> * buf - buffer to store</font>
+00274 <font class="comment"> * len - length of buffer (0 - null terminated)</font>
+00275 <font class="comment"> */</font>
+00276
+00277 <font class="keywordtype">void</font> zVerse::settext(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len)
+00278 {
+00279 <font class="keywordflow">if</font> (!testmt)
+00280 testmt = ((idxfp[0]) ? 1:2);
+00281 <font class="keywordflow">if</font> ((!dirtyCache) || (cacheBufIdx &lt; 0)) {
+00282 cacheBufIdx = lseek(idxfp[testmt-1]-&gt;getFd(), 0, SEEK_END) / 12;
+00283 cacheTestament = testmt;
+00284 <font class="keywordflow">if</font> (cacheBuf)
+00285 free(cacheBuf);
+00286 cacheBuf = (<font class="keywordtype">char</font> *)calloc(len ? len : strlen(buf)+1, 1);
+00287 }
+00288 <font class="keywordflow">else</font> cacheBuf = (<font class="keywordtype">char</font> *)((cacheBuf)?realloc(cacheBuf, strlen(cacheBuf)+(len ? len : strlen(buf)+1)):calloc((len ? len : strlen(buf)+1), 1));
+00289
+00290 dirtyCache = <font class="keyword">true</font>;
+00291
+00292 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> start, outstart;
+00293 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> outBufIdx = cacheBufIdx;
+00294 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00295 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> outsize;
+00296
+00297 idxoff *= 10;
+00298 size = outsize = len ? len : strlen(buf);
+00299
+00300 start = strlen(cacheBuf);
+00301
+00302 <font class="keywordflow">if</font> (!size)
+00303 start = outBufIdx = 0;
+00304
+00305 outBufIdx = archtosword32(outBufIdx);
+00306 outstart = archtosword32(start);
+00307 outsize = archtosword16(size);
+00308
+00309 lseek(compfp[testmt-1]-&gt;getFd(), idxoff, SEEK_SET);
+00310 write(compfp[testmt-1]-&gt;getFd(), &amp;outBufIdx, 4);
+00311 write(compfp[testmt-1]-&gt;getFd(), &amp;outstart, 4);
+00312 write(compfp[testmt-1]-&gt;getFd(), &amp;outsize, 2);
+00313 strcat(cacheBuf, buf);
+00314 }
+00315
+00316
+00317 <font class="keywordtype">void</font> zVerse::flushCache() {
+00318 <font class="keywordflow">if</font> (dirtyCache) {
+00319 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> idxoff;
+00320 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> start, outstart;
+00321 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> size, outsize;
+00322 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> zsize, outzsize;
+00323
+00324 idxoff = cacheBufIdx * 12;
+00325 size = outsize = zsize = outzsize = strlen(cacheBuf);
+00326 <font class="keywordflow">if</font> (size) {
+00327 <font class="comment">// if (compressor) {</font>
+00328 <font class="comment">// delete compressor;</font>
+00329 <font class="comment">// compressor = new LZSSCompress();</font>
+00330 <font class="comment">// }</font>
+00331 compressor-&gt;Buf(cacheBuf);
+00332 compressor-&gt;zBuf(&amp;zsize);
+00333 outzsize = zsize;
+00334
+00335 start = outstart = lseek(textfp[cacheTestament-1]-&gt;getFd(), 0, SEEK_END);
+00336
+00337 outstart = archtosword32(start);
+00338 outsize = archtosword32(size);
+00339 outzsize = archtosword32(zsize);
+00340
+00341 write(textfp[cacheTestament-1]-&gt;getFd(), compressor-&gt;zBuf(&amp;zsize), zsize);
+00342
+00343 lseek(idxfp[cacheTestament-1]-&gt;getFd(), idxoff, SEEK_SET);
+00344 write(idxfp[cacheTestament-1]-&gt;getFd(), &amp;outstart, 4);
+00345 write(idxfp[cacheTestament-1]-&gt;getFd(), &amp;outzsize, 4);
+00346 write(idxfp[cacheTestament-1]-&gt;getFd(), &amp;outsize, 4);
+00347 }
+00348 dirtyCache = <font class="keyword">false</font>;
+00349 }
+00350 }
+00351
+00352 <font class="comment">/******************************************************************************</font>
+00353 <font class="comment"> * RawVerse::linkentry - links one entry to another</font>
+00354 <font class="comment"> *</font>
+00355 <font class="comment"> * ENT: testmt - testament to find (0 - Bible/module introduction)</font>
+00356 <font class="comment"> * destidxoff - dest offset into .vss</font>
+00357 <font class="comment"> * srcidxoff - source offset into .vss</font>
+00358 <font class="comment"> */</font>
+00359
+00360 <font class="keywordtype">void</font> zVerse::linkentry(<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> destidxoff, <font class="keywordtype">long</font> srcidxoff) {
+00361 <font class="keywordtype">long</font> bufidx;
+00362 <font class="keywordtype">long</font> start;
+00363 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
+00364
+00365 destidxoff *= 10;
+00366 srcidxoff *= 10;
+00367
+00368 <font class="keywordflow">if</font> (!testmt)
+00369 testmt = ((idxfp[1]) ? 1:2);
+00370
+00371 <font class="comment">// get source</font>
+00372 lseek(compfp[testmt-1]-&gt;getFd(), srcidxoff, SEEK_SET);
+00373 read(compfp[testmt-1]-&gt;getFd(), &amp;bufidx, 4);
+00374 read(compfp[testmt-1]-&gt;getFd(), &amp;start, 4);
+00375 read(compfp[testmt-1]-&gt;getFd(), &amp;size, 2);
+00376
+00377 <font class="comment">// write dest</font>
+00378 lseek(compfp[testmt-1]-&gt;getFd(), destidxoff, SEEK_SET);
+00379 write(compfp[testmt-1]-&gt;getFd(), &amp;bufidx, 4);
+00380 write(compfp[testmt-1]-&gt;getFd(), &amp;start, 4);
+00381 write(compfp[testmt-1]-&gt;getFd(), &amp;size, 2);
+00382 }
+00383
+00384
+00385 <font class="comment">/******************************************************************************</font>
+00386 <font class="comment"> * RawVerse::CreateModule - Creates new module files</font>
+00387 <font class="comment"> *</font>
+00388 <font class="comment"> * ENT: path - directory to store module files</font>
+00389 <font class="comment"> * RET: error status</font>
+00390 <font class="comment"> */</font>
+00391
+00392 <font class="keywordtype">char</font> zVerse::createModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> blockBound)
+00393 {
+00394 <font class="keywordtype">char</font> *path = 0;
+00395 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen (ipath) + 20 ];
+00396 FileDesc *fd, *fd2;
+00397
+00398 stdstr(&amp;path, ipath);
+00399
+00400 <font class="keywordflow">if</font> ((path[strlen(path)-1] == <font class="charliteral">'/'</font>) || (path[strlen(path)-1] == <font class="charliteral">'\\'</font>))
+00401 path[strlen(path)-1] = 0;
+00402
+00403 sprintf(buf, <font class="stringliteral">"%s/ot.%czs"</font>, path, uniqueIndexID[blockBound]);
+00404 unlink(buf);
+00405 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00406 fd-&gt;getFd();
+00407 FileMgr::systemFileMgr.close(fd);
+00408
+00409 sprintf(buf, <font class="stringliteral">"%s/nt.%czs"</font>, path, uniqueIndexID[blockBound]);
+00410 unlink(buf);
+00411 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00412 fd-&gt;getFd();
+00413 FileMgr::systemFileMgr.close(fd);
+00414
+00415 sprintf(buf, <font class="stringliteral">"%s/ot.%czz"</font>, path, uniqueIndexID[blockBound]);
+00416 unlink(buf);
+00417 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00418 fd-&gt;getFd();
+00419 FileMgr::systemFileMgr.close(fd);
+00420
+00421 sprintf(buf, <font class="stringliteral">"%s/nt.%czz"</font>, path, uniqueIndexID[blockBound]);
+00422 unlink(buf);
+00423 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00424 fd2-&gt;getFd();
+00425 FileMgr::systemFileMgr.close(fd);
+00426
+00427 sprintf(buf, <font class="stringliteral">"%s/ot.%czv"</font>, path, uniqueIndexID[blockBound]);
+00428 unlink(buf);
+00429 fd = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00430 fd-&gt;getFd();
+00431
+00432 sprintf(buf, <font class="stringliteral">"%s/nt.%czv"</font>, path, uniqueIndexID[blockBound]);
+00433 unlink(buf);
+00434 fd2 = FileMgr::systemFileMgr.open(buf, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE);
+00435 fd2-&gt;getFd();
+00436
+00437 <a class="code" href="class_verse_key.html">VerseKey</a> vk;
+00438 vk.<a class="code" href="class_verse_key.html#a32">Headings</a>(1);
+00439 <font class="keywordtype">long</font> offset = 0;
+00440 <font class="keywordtype">short</font> size = 0;
+00441 <font class="keywordflow">for</font> (vk = TOP; !vk.<a class="code" href="class_s_w_key.html#a6">Error</a>(); vk++) {
+00442 write((vk.<a class="code" href="class_verse_key.html#a22">Testament</a>() == 1) ? fd-&gt;getFd() : fd2-&gt;getFd(), &amp;offset, 4); <font class="comment">//compBufIdxOffset</font>
+00443 write((vk.<a class="code" href="class_verse_key.html#a22">Testament</a>() == 1) ? fd-&gt;getFd() : fd2-&gt;getFd(), &amp;offset, 4);
+00444 write((vk.<a class="code" href="class_verse_key.html#a22">Testament</a>() == 1) ? fd-&gt;getFd() : fd2-&gt;getFd(), &amp;size, 2);
+00445 }
+00446
+00447 FileMgr::systemFileMgr.close(fd);
+00448 FileMgr::systemFileMgr.close(fd2);
+00449
+00450 <font class="keyword">delete</font> [] path;
+00451 <font class="comment">/*</font>
+00452 <font class="comment"> RawVerse rv(path);</font>
+00453 <font class="comment"> VerseKey mykey("Rev 22:21");</font>
+00454 <font class="comment">*/</font>
+00455
+00456 <font class="keywordflow">return</font> 0;
+00457 }
+00458
+00459
+00460 <font class="comment">/******************************************************************************</font>
+00461 <font class="comment"> * zVerse::preptext - Prepares the text before returning it to external</font>
+00462 <font class="comment"> * objects</font>
+00463 <font class="comment"> *</font>
+00464 <font class="comment"> * ENT: buf - buffer where text is stored and where to store the prep'd</font>
+00465 <font class="comment"> * text.</font>
+00466 <font class="comment"> */</font>
+00467
+00468 <font class="keywordtype">void</font> zVerse::preptext(<font class="keywordtype">char</font> *buf)
+00469 {
+00470 <font class="keywordtype">char</font> *to, *from, space = 0, cr = 0, realdata = 0, nlcnt = 0;
+00471
+00472 <font class="keywordflow">for</font> (to = from = buf; *from; from++) {
+00473 <font class="keywordflow">switch</font> (*from) {
+00474 <font class="keywordflow">case</font> 10:
+00475 <font class="keywordflow">if</font> (!realdata)
+00476 <font class="keywordflow">continue</font>;
+00477 space = (cr) ? 0 : 1;
+00478 cr = 0;
+00479 nlcnt++;
+00480 <font class="keywordflow">if</font> (nlcnt &gt; 1) {
+00481 <font class="comment">// *to++ = nl;</font>
+00482 *to++ = nl;
+00483 <font class="comment">// nlcnt = 0;</font>
+00484 }
+00485 <font class="keywordflow">continue</font>;
+00486 <font class="keywordflow">case</font> 13:
+00487 <font class="keywordflow">if</font> (!realdata)
+00488 <font class="keywordflow">continue</font>;
+00489 *to++ = nl;
+00490 space = 0;
+00491 cr = 1;
+00492 <font class="keywordflow">continue</font>;
+00493 }
+00494 realdata = 1;
+00495 nlcnt = 0;
+00496 <font class="keywordflow">if</font> (space) {
+00497 space = 0;
+00498 <font class="keywordflow">if</font> (*from != <font class="charliteral">' '</font>) {
+00499 *to++ = <font class="charliteral">' '</font>;
+00500 from--;
+00501 <font class="keywordflow">continue</font>;
+00502 }
+00503 }
+00504 *to++ = *from;
+00505 }
+00506 *to = 0;
+00507
+00508 <font class="keywordflow">if</font> (to &gt; buf) {
+00509 <font class="keywordflow">for</font> (to--; to &gt; buf; to--) { <font class="comment">// remove trailing excess</font>
+00510 <font class="keywordflow">if</font> ((*to == 10) || (*to == <font class="charliteral">' '</font>))
+00511 *to = 0;
+00512 <font class="keywordflow">else</font> <font class="keywordflow">break</font>;
+00513 }
+00514 }
+00515 }
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>
diff --git a/doc/api-documentation/html/zverse_8h-source.html b/doc/api-documentation/html/zverse_8h-source.html
new file mode 100644
index 0000000..5620f71
--- /dev/null
+++ b/doc/api-documentation/html/zverse_8h-source.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>zverse.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.2.15 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zverse.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
+00002 <font class="comment"> * rawverse.h - code for class 'RawVerse'- a module that reads raw text</font>
+00003 <font class="comment"> * files: ot and nt using indexs ??.bks ??.cps ??.vss</font>
+00004 <font class="comment"> * and provides lookup and parsing functions based on</font>
+00005 <font class="comment"> * class VerseKey</font>
+00006 <font class="comment"> */</font>
+00007
+00008 <font class="preprocessor">#ifndef ZVERSE_H</font>
+00009 <font class="preprocessor"></font><font class="preprocessor">#define ZVERSE_H</font>
+00010 <font class="preprocessor"></font>
+00011 <font class="preprocessor">#include &lt;filemgr.h&gt;</font>
+00012 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
+00013 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
+00014 <font class="preprocessor">#include &lt;swcomprs.h&gt;</font>
+00015
+00016 <font class="preprocessor">#include &lt;defs.h&gt;</font>
+00017
+00018 <font class="keyword">class </font>SWDLLEXPORT zVerse {
+00019 SWCompress *compressor;
+00020
+00021 <font class="keyword">protected</font>:
+00022 <font class="keyword">static</font> <font class="keywordtype">int</font> instance; <font class="comment">// number of instantiated RawVerse objects or derivitives</font>
+00023
+00024 FileDesc *idxfp[2];
+00025 FileDesc *textfp[2];
+00026 FileDesc *compfp[2];
+00027 <font class="keywordtype">char</font> *path;
+00028 <font class="keywordtype">void</font> preptext (<font class="keywordtype">char</font> *buf);
+00029 <font class="keywordtype">void</font> settext (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keywordtype">long</font> len = 0);
+00030 <font class="keywordtype">void</font> linkentry (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> destidxoff, <font class="keywordtype">long</font> srcidxoff);
+00031 <font class="keywordtype">void</font> flushCache ();
+00032 <font class="comment">//RawVerse();</font>
+00033 <font class="keywordtype">char</font> *cacheBuf;
+00034 <font class="keywordtype">char</font> cacheTestament;
+00035 <font class="keywordtype">long</font> cacheBufIdx;
+00036 <font class="keywordtype">bool</font> dirtyCache;
+00037
+00038 <font class="keyword">public</font>:
+00039
+00040 <font class="preprocessor">#define VERSEBLOCKS 2</font>
+00041 <font class="preprocessor"></font><font class="preprocessor">#define CHAPTERBLOCKS 3</font>
+00042 <font class="preprocessor"></font><font class="preprocessor">#define BOOKBLOCKS 4</font>
+00043 <font class="preprocessor"></font>
+00044 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> uniqueIndexID[];
+00045 <font class="keywordtype">char</font> nl;
+00046
+00047
+00048 zVerse (<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keywordtype">int</font> fileMode = O_RDONLY, <font class="keywordtype">int</font> blockType = CHAPTERBLOCKS, SWCompress * icomp = 0);
+00049 <font class="keyword">virtual</font> ~ zVerse ();
+00050 <font class="keywordtype">void</font> findoffset (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> idxoff, <font class="keywordtype">long</font> *start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> *end);
+00051 <font class="keywordtype">void</font> swgettext (<font class="keywordtype">char</font> testmt, <font class="keywordtype">long</font> start, <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size, <font class="keywordtype">char</font> *buf);
+00052 <font class="keyword">static</font> <font class="keywordtype">char</font> createModule (<font class="keyword">const</font> <font class="keywordtype">char</font> *path, <font class="keywordtype">int</font> blockBound);
+00053 };
+00054
+00055
+00056 <font class="preprocessor">#endif</font>
+</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:01 2002 for The Sword Project by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0
+width=110 height=53></a>1.2.15 </small></address>
+</body>
+</html>